#include <stdio.h>
int main()
{
int x=100;
x=x++;
printf("x : %d\n",x); //prints 101
return 0;
}
输出 101 的原因是什么?我认为输出应该是100。
#include <stdio.h>
int main()
{
int x=100;
x=x++;
printf("x : %d\n",x); //prints 101
return 0;
}
输出 101 的原因是什么?我认为输出应该是100。
这是我相信您正在寻找的内容:
int main(){
int x=100;
printf("x : %d\n",x++); // Will print 100 and then increment x
return 0;
}
您x
在打印之前递增 - 所以这就是 output 的原因101
。
您正在执行与x = x; x++;
这就是正在发生的事情
#include <stdio.h>
int main()
{
int x=100;
x=x++; // This is original code however I have rewritten this as below
x=x;
x++;
printf("x : %d\n",x); //prints 101
return 0;
}
如你看到的
x=x++;
可以改写为
x=x;
x++;
因此结果不足为奇......
x
有效地将其分配给 后,您正在递增x
:
有效地x=x++
变成(assign x to x prior to increment) then (increment x)
这将产生与您要编写相同的效果:
x = x;
++x; // Increment after the assignment
x=x++;
这应该在该行之后将 x 保留为 101 。
您正在增加x
您正在打印的相同 - 在这里无论是后增量还是预增量都无关紧要。
x=x++
将产生与 相同的结果x=++x
。
如果您想为其分配另一个对象,请执行以下操作:
#include<stdio.h>
int main(){
int x=100;
int y=x++;
printf("y : %d\n",y); //prints 100
printf("x : %d\n",x); //prints 101
return 0;
}
效果是 x 的值不会改变。
x++
像这样工作:
在 C++ 中,它看起来像这样:
int PostIncrement(int& x)
{
int y = x;
x = x + 1;
return y;
}
运算符优先级不会以这种方式丢失,并且赋值是在递增之后完成的。