同样是C语言编辑器,为什么得到的结果不同?怎么算啊?
Microsoft Visual C++ 6.0:i=3,输出的是16Dev-C++:i=3,输出的是15??
#include<stdio.h>
int main()
{
int i;
scanf("%d",&i);
printf("%d\n",(++i)+(++i)+(++i));
return 0;
}
{:10_269:}
因为这个代码在C标准中没有定义,也就是编译器爱怎么弄就怎么弄
如果你是编译器,当你看到这样的代码时你会怎么做?也就是你认为这行代码应该输出多少?说明你的理由
printf("%d\n",(++i)+(++i)+(++i)); 人造人 发表于 2019-11-6 13:10
因为这个代码在C标准中没有定义,也就是编译器爱怎么弄就怎么弄
如果你是编译器,当你看到这样的代码时 ...
我觉得应该是15,先自增再赋值,就是4+5+6=15。但16是怎么算出来的,想不通怎么会有多种算法 如果 i = 3
1.为什么不能先执行3个 ++i,然后把执行后的3个结果加起来?
(++i)+(++i)+(++i)
6 + 6 + 6
2.为什么不能先执行前两个 ++i然后把这两个结果加起来,然后执行最后一个 ++i,然后加起来?
(++i)+(++i)+(++i)
5 + 5 + 6
页:
[1]