C++ do-while循环中前置与后置自增运算符输出差异疑问
do-while循环中前后置自增操作的输出差异原理
两段代码的输出差异完全来自**后置自增(n++)和前置自增(++n)**的执行逻辑不同,结合do-while「先执行循环体、后判断循环条件」的特性就产生了不同结果:
第一段代码(使用n++)执行逻辑
#include <iostream> #include <string> using namespace std; int main() { int n = 1; do cout << n << " " ; while (n++ <= 3); }
后置自增n++的规则是:先返回变量当前的原始值参与表达式判断,再对变量执行+1操作。逐轮执行流程如下:
- 初始值n=1
- 第1轮:先执行循环体输出
1,判断条件时取当前n=1比较(1<=3成立),随后n自增为2,循环继续 - 第2轮:执行循环体输出
2,判断条件时取当前n=2比较(2<=3成立),随后n自增为3,循环继续 - 第3轮:执行循环体输出
3,判断条件时取当前n=3比较(3<=3成立),随后n自增为4,循环继续 - 第4轮:执行循环体输出
4,判断条件时取当前n=4比较(4<=3不成立),随后n自增为5,循环终止
最终输出结果为1 2 3 4 。
第二段代码(使用++n)执行逻辑
#include <iostream> #include <string> using namespace std; int main() { int n = 1; do cout << n << " " ; while (++n <= 3); }
前置自增++n的规则是:先对变量执行+1操作,再返回自增后的值参与表达式判断。逐轮执行流程如下:
- 初始值n=1
- 第1轮:先执行循环体输出
1,判断条件时先把n自增为2,用2比较(2<=3成立),循环继续 - 第2轮:执行循环体输出
2,判断条件时先把n自增为3,用3比较(3<=3成立),循环继续 - 第3轮:执行循环体输出
3,判断条件时先把n自增为4,用4比较(4<=3不成立),循环终止
最终输出结果为1 2 3 。
内容的提问来源于stack exchange,提问作者Ahmed Talib
相关产品推荐
相关产品推荐

