3

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

4

3 回答 3

2

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

x = x++; 等于

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

所以和x 一样

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

于 2013-08-01T11:44:58.777 回答
0
x=x++;

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

于 2013-08-01T12:08:26.627 回答
0

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

int temp=x;
x=x+1;
x=temp;
于 2013-08-01T11:46:20.103 回答