我在练习增量运算符,它有两个变体前缀和后缀。 为了好玩,我写了下面这个程序,这让我很困惑。 节目主体如下:
int a=10;
a=a++;
cout << a;
>
我得到的输出是10。 首先我认为这是真的,因为先完成赋值,然后a的值递增1。 因此yes输出应为10,如图所示。
但几秒钟后我想应该是11。 因为当第二个语句完成时,即使a被赋值为10,我们也立即将它加1。 所以输出应该是11。 这里出什么问题了? 谢了。
您可以这样想代码:
int a = 10;
int temp = a++;
a = temp;
cout << a;
赋值的左边和右边都必须在实际赋值之前计算,这意味着增加它的副作用将在赋值之前计算(请参阅此答案)。 因此,实际情况是,A++
返回10,然后将A
递增到11,但随后将A
设置为10
的旧值,因此最终什么也不会发生。
在您的代码中:
int a=10;//assign value
a=a++;//assign then increase means a = 10 (intermediatly a=11) but it assign value before that.
cout << a; //print
您的代码
int a = 10;
int a = a++; #Increament Operator
cout << a
产出:10
所以让我们来了解在被看到的背后发生了什么
a++,它返回a并将a的值递增1
int a = 10;
cout << a++;
cout << a;
产出:10 11
了解更多关于后缀运算符的信息