C语言优先级问题
问题,++a 和 a++ 一个是先++再引用,一个是先引用,再++。
b=a++; 等价于 b=a; a++;
但单目运算符 ++ 的优先级高于赋值运算符 = ,为什么不是这样: 而不是 b = (a++) ;
为何?
[解决办法]
b = a++;
就是 b = (a++);
但是 a++ 这个表达是返回的是++ 之前的 a; 所以 b 是等于 ++ 之前的 a 的。
[解决办法]
所以运算依然是先 ++;然后在 =。
计算顺序:
auto t = a;
a = a + 1;
b = t; // a ++ 返回的是++ 之前的临时变量。所以 a++ 是不可引用的。