Why does the expression a = a + b - ( b = a ) give a sequence point warning in c++?
Following is the test code: int main() { int a = 3; int b = 4; a = a + b - (b = a); cout << "a :" << a << " " << "b :" << b << "\n"; return 0; } Compiling this gives the following warning: > $ g++ -Wall -o test test.cpp test.cpp: In function ‘int main()’: > test.cpp:11:21: warning: operation on ‘b’ may be undefined > [-Wsequence-point] Why can the operation be undefined? According to my understanding, first the subexpression (b = a) should be evaluated because of higher precedence of (), thus setting b = a. Then, since '+' and '-' have same precedence, the expression would be evaluated left