Consider the following code snippet in Java. I know that the statement temp[index] = index = 0;
in the following code snippet is pretty much unacceptable but it may be necessary for some situations:
package arraypkg;
final public class Main
{
public static void main(String... args)
{
int[]temp=new int[]{4,3,2,1};
int index = 1;
temp[index] = index = 0;
System.out.println("temp[0] = "+temp[0]);
System.out.println("temp[1] = "+temp[1]);
}
}
It displays the following output on the console.
temp[0] = 4
temp[1] = 0
I do not understand temp[index] = index = 0;
.
How does temp[1]
contain 0
? How does this assignment occur?
The assignment is done (temp[index] = (index = 0)
), right associative.
But first the expression temp[index]
is evaluated for the LHS variable. At that time index
is still 1. Then the RHS (index = 0
) is done.
Your statement assigned zero to it. The statement temp[index] = index = 0 wrote zero into index AND into temp[index]. That's what that meant. Make all variables to the left of an assignment operator 0.
What that line does is say that temp[index]
should equal index
after index
is assigned the value 0
.
This is why this syntax is mostly unacceptable. It's hard to read and most people don't understand it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With