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

请教这段无显式控制变量的C++ for循环的工作机制

拆解这段无显式初始化的for循环

嗨,我来帮你理清楚这段代码里的for循环逻辑~首先先把你给出的代码完整贴出来:

int n = 123456; 
vector<int> v; 
for(; n; n/=10) 
    v.push_back( n%10 ); 

先明确:这个for循环有控制逻辑,控制变量就是n

C++里的for循环结构是 for(初始化表达式; 条件表达式; 更新表达式),其中三个部分都可以为空——这里只是把「初始化表达式」留空了,因为n已经在循环外面提前定义并赋值了。

逐部分拆解循环的工作原理

我们一步步看这个循环的执行过程:

  1. 条件判断:循环的条件是n,在C++里,非零的整数会被当作true,零则是false。所以只要n不等于0,循环就会继续执行。
  2. 循环体执行:每次进入循环,都会执行v.push_back(n%10)——n%10是取n的最后一位数字,比如初始n=123456时,123456%10=6,就把6添加到vector里。
  3. 更新变量:循环体执行完后,会执行n /=10,也就是n = n / 10,这会把n的最后一位去掉(因为是整数除法),比如123456除以10后变成12345。

举个具体的执行流程例子

以初始n=123456为例:

  • 第1次循环:n=123456(非零)→ 向v中添加6 → n变为12345
  • 第2次循环:n=12345(非零)→ 向v中添加5 → n变为1234
  • 第3次循环:n=1234(非零)→ 向v中添加4 → n变为123
  • 第4次循环:n=123(非零)→ 向v中添加3 → n变为12
  • 第5次循环:n=12(非零)→ 向v中添加2 → n变为1
  • 第6次循环:n=1(非零)→ 向v中添加1 → n变为0
  • 第7次判断:n=0,条件为false,循环结束

最终vectorv里的元素就是[6,5,4,3,2,1],也就是原数字的各位数字逆序存储。

内容的提问来源于stack exchange,提问作者D. Gaira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:37:02