解释为什么在相同的代码中的差异

gur*_*hni 0 c java

我的代码是:

 code(){
    int x=7;
    x=x++;
    output x;   //prints 8 in C, prints 7 in Java
 }
Run Code Online (Sandbox Code Playgroud)

球员上面的代码:打印8C,和7Java!!

为什么会这样?请解释.

NIN*_*OOP 8

那将7用Java 打印.x=x++;相当于:

int temp = x;
x = x + 1;  
x = temp;
Run Code Online (Sandbox Code Playgroud)

如果您使用前缀运算符,结果会有所不同++x.

在这里看看你自己:java代码 ; C代码.

阅读任何人都可以解释这些未定义的行为(i = i ++ + ++ i,i = i ++等...)来理解C中的输出.


Roh*_*ain 6

在Java中x=x++,被评估为:

int temp = x;
x = x + 1;
x = temp;
Run Code Online (Sandbox Code Playgroud)

所以,基本上没有变化是x在那个表达之后.

C然而,表达式是一个未定义行为.另请参阅序列点Wiki


Vov*_*ium 5

此代码在C中导致未定义的行为,因此结果可能是任何,7,8,15或Page错误.为什么这段代码给出7,是编译器问题.