int p=5,q
q=(++p)+(++p)+(++p)
为什么输出的结果是24,不应该是21吗?
第1个回答 2006-04-21
不同的编译器计算出来的结果不一样,一般不提倡这种写法的,这些题目只会出现在考试中,那些无聊的出题人在那里考我们,现实在很少有人这样写的,因为有时自己都会被搞晕,所以你只要知道++在前就先做自增,然后在用这个变量;++在后就先用变量,然后自增就够了.
在C中应该是先把三个自增都做掉,然后在去相加,所以应该是p=8+8+8;
在C中应该是先把三个自增都做掉,然后在去相加,所以应该是p=8+8+8;
第2个回答 2006-04-20
q=(++p)+(++p)+(++p)
对于上面的这个例子,不同的编译器有不同的执行顺序,VC里面是21,BC里面是24。原因是操作符存在有副作用。
Bc: 先计算++ 后计算 +
q=8+8+8=24
VC: q=6+7+8=21
对于上面的这个例子,不同的编译器有不同的执行顺序,VC里面是21,BC里面是24。原因是操作符存在有副作用。
Bc: 先计算++ 后计算 +
q=8+8+8=24
VC: q=6+7+8=21
第3个回答 2006-04-21
我用的是TC。
int p=5,q
q=(++p)+(++p)+(++p)
TC系统算这种题原理:TC是从后向前开始算,也就是说,它先算最后一个(++P)。这里最开始P=5,最后一个(++P)=6,倒数第二个(++P)=8,同理:第一个(++P)=10,所以q=6+8+10=24
int p=5,q
q=(++p)+(++p)+(++p)
TC系统算这种题原理:TC是从后向前开始算,也就是说,它先算最后一个(++P)。这里最开始P=5,最后一个(++P)=6,倒数第二个(++P)=8,同理:第一个(++P)=10,所以q=6+8+10=24
第4个回答 2006-04-20
18绝无可能
我的编译器(VC++ 6.0)得到的结果是22
取决于实现了。。。
++在前,先加后用
++在后,先用后加
大概是压栈后一次弹出两或者三个的缘故(取决于编译器实现),所以是8+8+8或者7+7+8
我的编译器(VC++ 6.0)得到的结果是22
取决于实现了。。。
++在前,先加后用
++在后,先用后加
大概是压栈后一次弹出两或者三个的缘故(取决于编译器实现),所以是8+8+8或者7+7+8
第5个回答 2006-04-20
编译器 首先是把3个p放入札中,然后进行3次自加得到p
=8,3*8=24本回答被提问者采纳
=8,3*8=24本回答被提问者采纳