读书人

C语言优先级有关问题

发布时间: 2012-08-02 11:35:25 作者: rapoo

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++ 是不可引用的。

读书人网 >C语言

热点推荐