KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
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-associatively. Thus, a + b should be evaluated next, and finally the result of (b = a) should be subtracted from a + b . I can't see any sequence-point rule being violated here.
Tags (comma-separated)
Save Edits
Cancel