C++代码中i++后置自增运算执行原理及运行结果疑问
C++ 后置自增运算符
i++运行原理解答 C++中后置自增运算符i++的执行逻辑是:先返回变量i的当前值参与所在表达式的运算,运算结束后立即对i执行+1操作,自增操作的执行时机早于同代码块中后续语句的执行。
以下是代码逐轮执行的完整流程:
- 初始化
int i = 1,进入while循环判断:i < 10成立,进入循环体。 - 第一轮if条件判断:
- 取i的当前值1参与
i++ % 2运算,计算得1%2=1,不满足==0的条件,if分支不执行。 - 表达式运算完成后i自增,值变为2。
- 取i的当前值1参与
- 第二轮循环,while判断
2 < 10成立,进入if条件判断:- 取i的当前值2参与
i++ %2运算,计算得2%2=0,满足条件。 - 表达式运算完成后i立即自增,值变为3。
- 执行后续的
cout << i << endl语句,此时i的值已经是3,所以首个输出为3。
- 取i的当前值2参与
- 后续循环逻辑同理:
- i=3时,用3计算取模结果为1,不满足条件,i自增为4,无输出。
- i=4时,用4计算取模结果为0,满足条件,i自增为5,输出5。
- 以此类推,直到i=9时,用9计算取模结果为1,不满足条件,i自增为10,while判断
10<10不成立,循环结束。
最终输出结果就是3、5、7、9,和实际运行结果一致。
你之前的误解在于认为自增操作会在if分支执行完成后才生效,实际上后置自增的自增操作在所在表达式求值完成后就会立刻执行,早于if分支内输出语句的执行时机,因此输出的是自增后的值。
内容的提问来源于stack exchange,提问作者Corin-2
相关产品推荐
相关产品推荐

