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

时间:2013-08-01 11:39:43

标签: java c post-increment

以下是我在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++"?

3 个答案:

答案 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