y+=y-=m*=y,int m=5,y=2,表达式执行完了y等于多少呢

来源:百度知道 编辑:UC知道 时间:2024/05/14 19:40:32
那么算出来-16的啊....

-16

整个表达式等价于

y+=(y-=(m*=y));

但是如果你的表达式就像上面那么写,会通不过编译。
得写成
int m=5, y=2;
y+=y-=m*=y;
才行。

写成这样还不明白的话:
先看m*=y;这个表达式的意义是m=m*y;就是用m乘以y结果送给m。
之后m=10,y=2.而整个表达式的值就是右值,也就是10。
接下来,就是y-=10了(看最上面的表达式),这个表达式等于y=y-10.
所以这时候y=-8,
最后y+=-8;等价于y=y-8;所以最后y=-16咯。

以后遇到这种问题就从右往左看,因为赋值语句都是右结合的。拆成一个个嵌套的表达式,表达式的值就是右值。

无法确定

-6?