#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
同样的情况。
请帮助.....
答案 0 :(得分:0)
x = x++
是未定义的行为,因此两个编译器生成两段不同的代码。
只需x++
即可满足您的第一段代码。
Here is a question with your exact problem for the second piece of code