gcc为windows和linux提供不同的结果

时间:2015-08-21 18:00:51

标签: c int

#include<stdio.h>
int main()
{
    int x=2;
    x=x++;
    printf("%d",x);
    return 0;
}

根据我的逻辑输出: 2

Windows上的输出: 3

Linux上的输出: 2

为什么Windows将3作为输出。 根据我的理解,x ++增加2到3但返回2.所以x应该有2.Is窗口评估这个不同的东西。

类似地:

#include<stdio.h>
 int main()
 {
    int x=2,y=4;
    x=x++ + ++y;
    printf("%d %d",x,y);
    return 0;
 }

根据我输出: 7 5

Windows中的输出: 8 5

Linux上的输出: 7 5

同样的情况。

请帮助.....

1 个答案:

答案 0 :(得分:0)

x = x++是未定义的行为,因此两个编译器生成两段不同的代码。

只需x++即可满足您的第一段代码。

Here is a question with your exact problem for the second piece of code