int a =3; int b=++((++a)--); 这样计算b的值为什么不对啊

问题描述:

int a =3; int b=++((++a)--); 这样计算b的值为什么不对啊
1个回答 分类:综合 2014-11-23

问题解答:

我来补答
无论在C还是C++中,这都是一个非法的表达式
C语言(至少C99之前,C11的话我不是很清楚)中自增自减运算符的操作对象都必须是左值,并且无论运算符是前缀还是后缀,其表达式的结果都是右值
所以如果这是段C代码你会发现两个errors
error C2105:'--' needs l-value
error C2105:'++' needs l-value
但是C++(C++没有系统学习过,只是自学,所以不敢很肯定,要是有说错,请哪位大牛更正)中的规定是
后自增运算和后自减运算的结果为右值表达式,先自增运算和先自减运算的结果为左值表达式
所以如果这段是C++代码,只会有一个error
error C2105:'++' needs l-value
 
 
展开全文阅读
剩余:2000