You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++程序后置递减运算符导致输出不符预期的技术疑问

为什么C++程序的输出和预期不符?

你的代码如下:

#include<iostream>
using namespace std; 

int main() {
    int   number19 , number20  ;
    const int number = 10 ;
    number20 = number + 10 ;
    number19 = number20--;
    cout << number << endl;
    cout << number20 << endl;
    cout << number19 << endl;
    return 0;
}

预期输出:
10
20
19

实际输出:
10
19
20

问题核心出在number19 = number20--;这一行的后置自减运算符行为上:

  • 后置--的执行逻辑是:先返回变量当前的数值作为表达式结果,再对变量自身执行减1操作。
  • 执行这行代码时,首先把number20当前的20赋值给number19,之后才将number20的值减1,变成19。

所以后续输出时:

  • number是常量,值保持10,输出符合预期;
  • number20已经完成减1操作,输出19;
  • number19拿到的是number20减1之前的原始值,输出20。

如果想让number20先减1再赋值给number19,改用前置自减运算符--number20即可,它会先将变量减1,再返回新值用于赋值。

内容的提问来源于stack exchange,提问作者Ilya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:40:58