提问者:小点点

带后缀的增量算子的混淆


我在练习增量运算符,它有两个变体前缀和后缀。 为了好玩,我写了下面这个程序,这让我很困惑。 节目主体如下:

int a=10;
a=a++; 
cout << a; 

>

  • 我得到的输出是10。 首先我认为这是真的,因为先完成赋值,然后a的值递增1。 因此yes输出应为10,如图所示。

    但几秒钟后我想应该是11。 因为当第二个语句完成时,即使a被赋值为10,我们也立即将它加1。 所以输出应该是11。 这里出什么问题了? 谢了。


  • 共3个答案

    匿名用户

    您可以这样想代码:

    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

    了解更多关于后缀运算符的信息