ios 发表于 2013-10-7 14:42:04

为毛?为毛?这到底是为毛?求大神。。

#include <stdio.h>
void main()
{
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d\n",p,q,i,j);
}

这个简单的程序,为什么q的输出值居然是24???想不明白呀。。

AS爱上· 发表于 2013-10-7 16:02:31

我输出的是15,22,8,8啊
用的是vc6.0

AS爱上· 发表于 2013-10-7 16:11:06

我觉得有可能是因为 编译器认为括号内的优先级高,先执行每个括号内的语句,这样j的值就变成了8,然后再将3个j相加,这样就得到24了、

API小肚兜 发表于 2013-10-7 16:14:10

自增的问题不要纠结,没意义,编译器的版本不一样结果不一样,实际开发时自己要注意

[YES]ぐ單﹎調゛ 发表于 2013-10-7 17:15:54

谢谢楼主分享

小亮1201 发表于 2013-10-8 09:46:44

同4l 编译器的问题,没必要纠结

magicyuc 发表于 2013-10-8 10:39:02

楼上正解哈
页: [1]
查看完整版本: 为毛?为毛?这到底是为毛?求大神。。