C++数字逆序输出程序执行流程及输出逻辑问询
程序执行流程详解
咱们一步一步拆解这段代码的运行过程,你就能立刻明白为什么输入32会输出23啦~
首先先看你的完整代码:
#include <iostream> int main() { int nr; std::cin>>nr; while (nr > 0) { int digit = nr % 10; nr /= 10; std::cout<<digit; } return 0; }
当你输入32时,程序的每一步执行细节如下:
- 初始赋值:输入的
32被存入变量nr,此时nr = 32。 - 第一次进入while循环(因为
32 > 0,循环条件成立):digit = nr % 10:%是取余运算符,32 % 10得到最后一位数字2,所以digit的值是2。nr /= 10:这是整数除法的简写(等价于nr = nr / 10),32 / 10的结果是3(整数除法会舍去小数部分),此时nr变成3。std::cout<<digit:把digit的值2输出到控制台,此时屏幕上显示2。
- 第二次进入while循环(此时
nr = 3 > 0,循环条件仍然成立):digit = nr % 10:3 % 10的结果是3,digit的值更新为3。nr /= 10:3 / 10的整数结果是0,nr现在变成0。std::cout<<digit:把digit的值3输出到控制台,屏幕上的内容就变成了23。
- 循环终止:现在
nr = 0,不满足nr > 0的循环条件,循环退出,程序正常结束。
简单来说,你写的while循环会反复执行里面的代码块,直到nr变成0为止。第一次循环处理并输出了最后一位2,第二次循环处理剩下的首位3,两者连续输出就组成了23,而不是只输出一次哦~
内容的提问来源于stack exchange,提问作者Darius Valeriu
相关产品推荐
相关产品推荐

