以下是我在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
我不明白为什么两种语言都有不同的输出。 我在下面提到了链接 What is x after "x = x++"?
答案 0 :(得分:2)
在x ++之后的java中,x
x = x ++;等于
int i= x;
x = x + 1;
x = i;
所以x
与 i
您可以在此处阅读更多内容:Why are these constructs (using ++) undefined behavior?
答案 1 :(得分:0)
在第二个示例中,赋值首先保存x的值,然后将x设置为其值加1,并且, 最后,将x重置为原始值。 种类:
int temp=x;
x=x+1;
x=temp;
答案 2 :(得分:0)
x=x++;
这在C中给出任意结果,主要取决于编译器。阅读C中的sequential points
。您可以C Programming
引用Dennis ritchie
。