回 帖 发 新 帖 刷新版面

主题:求帮助 有关于自增运算

#include "stdio.h"
void main() 
{  
   int a,b,c,d;
   a=5;
   b=5;
   c=(a++)+(a++)+(a++);
   d=(++b)+(++b)+(++b);
   printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
}
这段代码 为什么d=22 d不是8+8+8=24吗?++不是先自增再运算的吗?求解释!!!

回复列表 (共2个回复)

沙发

其实你没有必要去纠结这个问题,只要你了解了这个怎么用,就好,之所以结果为22而不是24,这是因为编译器编译文件时造成的。VC6有两种编译模式,一种DEBUG,一种是RELEASE,用DEBUG来调试,结果为22(这个模式也是通常我们在按钮上点击编译或是按F5情况下使用的模式),用RELEASE来调试,结果为24。编译模式更换,请查看菜单build->Set Active Configuration,打开后就可以看到了。 出这种题完全没有必要,也没必要这样去写代码,如果以后在项目中出现类似于这种情况的代码,编译没有错,最后结果却不对,那叫程序员不找死。。。。。。

板凳


楼上说的很对,对于这种问题没必要去深究的,更何况不同的编译器的实现还是不一样的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册