海口优联国际医院:i=2是不用说了;但j怎么的出的啊!

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 20:40:32
已知int i=1,j;执行语句j=-i++;后,i 和j的值分别为多少?

j=-i++

i=2
j=-1

分析:
根据算术符优先顺序,上述表达式等价于
j=-(i++);
首先应该理解,j的值是(i++)表达式的负值,而i为1,所以(i++)这个表达式的值是1,所以-(i++)是-1,也就是j的值,计算完(-(i++))这个表达式的值后,i自己加1,所以i=2.

另外,4楼不能理解为j=-i,而应该理解为j=-(表达式值),其中这个表达式i++的值是1.否则的话,就解释不了下面的式子:j=(++i)+(++i)+(++i);

-1

负号 - 的优先级低于 ++ ,所以j=-i++相当于j=-(i++)
,另外需要注意自加运算符的运算过程

所以结果应该是这样的:
i = 2, j = -1

另外,不妨再试一试:j = -++i;
答案应该是 i = 2, j = -2

先是j=-i,然后再执行i++(初学者的想法,高手纠错)

i = 2, j = -1
因为语句j=-i++,
首先将-i赋给j,然后执行i++.
如果改为j=-++i,
那么值行结果为i = 2, j = -2
因为首先值行++i,然后将-++i赋给j。
结论:i++是先赋值,再进行自加运算
++i是先进行自加运算,再进行赋值。

j=-1
变为j=-(i++)
可以看一下算符的优先级.