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
相关产品推荐
相关产品推荐

