# Array expression evaluation

ahmed yehia

Ranch Hand

Posts: 424

Burkhard Hassel

Ranch Hand

Posts: 1274

posted 9 years ago

- 2

Howdy!

What is

a [ (a = b)[3] ] ?

It is the

With a = b, the variable a now points to the array object of the second line (where also b points to).

so (a = b)[3]

points to the 3 rd element of the b array. The zero.

The total expression

a [ (a = b)[3] ]

is the same as

a [0]

But didn't we reassign a to b in the inner part?

Yes, but:

The chosing of array a has been done before the reassignment inside the brackets. Therefore the one and not the two is printed.

By the way, after that line the reassignment will be valid for following code.

prints

1

1

2

Yours,

Bu.

What is

a [ (a = b)[3] ] ?

It is the

*(a = b)[3]*-th element of array a.With a = b, the variable a now points to the array object of the second line (where also b points to).

so (a = b)[3]

points to the 3 rd element of the b array. The zero.

The total expression

a [ (a = b)[3] ]

is the same as

a [0]

But didn't we reassign a to b in the inner part?

Yes, but:

.

In an array access, the expression to the left of the brackets appears to be fully evaluated before any part of the expression within the brackets is evaluated.

The chosing of array a has been done before the reassignment inside the brackets. Therefore the one and not the two is printed.

By the way, after that line the reassignment will be valid for following code.

prints

1

1

2

Yours,

Bu.

all events occur in real time

Gautam Pandey

Greenhorn

Posts: 21

Burkhard Hassel

Ranch Hand

Posts: 1274

posted 9 years ago

(a = b)[3] ==> a[3]=b[3]

No, here is the mistake. You don't reassign individual elements of the arrays with (a=b)[3]

Yours,

Bu.

Originally posted by Gautam Pandey:

I agree with the above explanation , but when i first look at the code , i took it this way

(a = b)[3] ==> a[3]=b[3] ==> a[3]=0 ==> 0

so a [ (a = b)[3] ] ==> a[0]

(a = b)[3] ==> a[3]=b[3]

No, here is the mistake. You don't reassign individual elements of the arrays with (a=b)[3]

Yours,

Bu.

all events occur in real time

Gautam Pandey

Greenhorn

Posts: 21