关于复合赋值运算符的优先级问题
程序代码:
#include <stdio.h> int main(int argc, char *argv[]) { int a = 0, b = 1, c = 20, d = 3, e = 4; a += b *= c /= b += e; printf("%d", a); }
最后算出来的结果是 20,不知道这个是怎么算出来的。按照 + - * / % 的优先级算出来是 24,按照从右到左算出来也不是 4,按照从左到右是 24,没有一个结果和编译器给出的是一样的
而且报了个警告:
Untitled.cpp:5:19: warning: unsequenced modification and access to 'b' [-Wunsequenced]
a += b *= c /= b += e;
~~ ^
1 warning generated.
是不是复合赋值运算符之间的优先级属于未定义,然后这种运算属于未定义行为