为什么两种技术中的相同代码表现不同

下面是我在C中的代码片段。

void main(){ int x = 7; x = x++; printf("%d",x); } 

输出:8

 public static void main(String[] args){ int x = 7; x = x++; System.out.println(x); } 

输出:7

我不明白为什么两种语言给出不同的输出。 我在下面提到了链接什么是“x = x ++”之后的x?

在x ++之后的java中,x的值没有变化

x = x ++; 等于

 int i= x; x = x + 1; x = i; 

所以x我一样

您可以从这里阅读更多内容: 为什么这些结构(使用++)未定义的行为?

在第二个示例中,赋值首先保存x的值,然后将x设置为其值加1,最后将x重置为其原始值。 的种类:

 int temp=x; x=x+1; x=temp; 
 x=x++; 

这在C中给出任意结果,主要取决于编译器。 阅读C中的sequential points 。您可以参考Dennis ritchie C Programming