为什么两种技术中的相同代码表现不同
下面是我在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
。