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

C++中初始a为1的while(a--)循环为何会输出yes

int a{1};

while(a--){
    cout << "yes";
}

运行结果原因

核心是对C++中后置自减运算符的求值逻辑理解有偏差:

  • 后置自减表达式a--的求值规则是:先返回变量a当前的原始值,再对a本身执行减1操作,作为while判断依据的是表达式返回的原始值,不是减完之后的值。

这段代码的实际执行顺序:

  1. 初始化阶段a被赋值为1
  2. 第一次判断while循环条件时,计算a--:先取出a当前的值1作为整个表达式的结果,这个非0值会被判定为循环条件成立;取值完成后a才被减为0
  3. 条件成立,进入循环体执行输出语句,打印yes
  4. 循环体执行完毕后再次判断条件:此时a的值是0,a--先返回0作为表达式结果,判定条件不成立,循环终止,取值完成后a才会被减为-1

补充:如果换成前置自减--a,逻辑就会变成先把a减1,再返回减完的结果作为判断值,这种情况下第一次判断拿到的就是0,确实不会进入循环输出内容。


内容的提问来源于stack exchange,提问作者Hritik Rana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.06 16:15:43