casacaded assignment : Java Glossary
home C words local find no local find frame, full screen Google search web for topic jump to footer translate with Babelfish 2008-04-12 by Roedy Green ©1996-2008 Canadian Mind Products
Go to : punctuation 0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z (all)
cascaded assignment
In Java is it possible to cascade, aka chain assignment operators, but it is in generally considered poor form since the code often surprises the average programmer with its effects. Consider the following correct code to swap a and b without using an intermediate temporary:
int a=4;
int b=5;
a ^= b; // a=1, b=5
b ^= a; // a=1, b=4
a ^= b; // a=5, b=4
You might think you could collapse that program like this, as you can in some C++ compilers. It may not be legitimate C++, but some compilers allow it. However, in Java it does not work. You just get a=0.
int a=4;
int b=5;
a ^= b ^= a ^= b;
Even adding parentheses does not help:
int a=4;
int b=5;
a ^= ( b ^= ( a ^= b ) );
As a general rule, avoid cascading any of the Java combo assign/compute operators such as ^= += -= *= /= %= &= |= <<= >>= >>>= or =, especially when you use the same variable both on the left and right of an assignment operator.

CMP_homejump to top
CMP logo
feedback Please email your feedback for publication, errors, omissions, broken/redirected link reports
and suggestions to improve this page to Roedy Green : feedback email
made with CSS
HTML Checked!
ICRA ratings logo
mindprod.com IP:[65.110.21.43]
Your face IP:[38.103.63.18] Join the Greenpeace cyberactivist community and start making waves.
You are visitor number 11.
You can get a fresh copy of this page from: or possibly from your local J: drive (Java virtual drive/Mindprod website mirror)
http://mindprod.com/jgloss/cascadedassignment.html J:\mindprod\jgloss\cascadedassignment.html