liuyanxiong 发表于 2019-11-6 12:56:07

同样是C语言编辑器,为什么得到的结果不同?怎么算啊?

Microsoft Visual C++ 6.0:i=3,输出的是16
Dev-C++:i=3,输出的是15??


#include<stdio.h>
int main()
{
        int i;
        scanf("%d",&i);
        printf("%d\n",(++i)+(++i)+(++i));
        return 0;
}
{:10_269:}

人造人 发表于 2019-11-6 13:10:21

因为这个代码在C标准中没有定义,也就是编译器爱怎么弄就怎么弄

如果你是编译器,当你看到这样的代码时你会怎么做?也就是你认为这行代码应该输出多少?说明你的理由
printf("%d\n",(++i)+(++i)+(++i));

liuyanxiong 发表于 2019-11-6 13:32:26

人造人 发表于 2019-11-6 13:10
因为这个代码在C标准中没有定义,也就是编译器爱怎么弄就怎么弄

如果你是编译器,当你看到这样的代码时 ...

我觉得应该是15,先自增再赋值,就是4+5+6=15。但16是怎么算出来的,想不通怎么会有多种算法

人造人 发表于 2019-11-6 23:30:45

如果 i = 3

1.为什么不能先执行3个 ++i,然后把执行后的3个结果加起来?
(++i)+(++i)+(++i)
6 + 6 + 6

2.为什么不能先执行前两个 ++i然后把这两个结果加起来,然后执行最后一个 ++i,然后加起来?
(++i)+(++i)+(++i)
5 + 5 + 6
页: [1]
查看完整版本: 同样是C语言编辑器,为什么得到的结果不同?怎么算啊?