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

Hacking With Swift的while循环测试结果是否有误?代码打印行数存疑

解析Swift while循环的打印行数问题

先把问题中的代码贴出来:

var number: Int = 10
while number > 0 {
    number -= 2
    if number % 2 == 0 {
        print("\(number) is an even number.")
    }
}

逐次拆解循环执行过程

我们一步一步走,每一次循环都明确记录number的变化和打印情况:

  1. 第一次循环

    • 初始number = 10,满足number > 0,进入循环
    • 执行number -= 2,number变成8
    • 8是偶数,打印8 is an even number. → 第1行
  2. 第二次循环

    • 当前number = 8,满足number > 0,进入循环
    • number减2变成6
    • 6是偶数,打印 → 第2行
  3. 第三次循环

    • 当前number = 6,满足条件,进入循环
    • number减2变成4
    • 4是偶数,打印 → 第3行
  4. 第四次循环

    • 当前number = 4,满足条件,进入循环
    • number减2变成2
    • 2是偶数,打印 → 第4行
  5. 第五次循环

    • 当前number = 2,满足number > 0,进入循环
    • number减2变成0
    • 0是偶数(0能被2整除),打印0 is an even number. → 第5行

循环终止时机

第五次循环结束后,number的值是0。下一次判断while number > 0时,0不大于0,循环停止。

为什么之前会有误解?

  • 你以为循环在number为2时停止,但实际上number=2仍然满足>0的条件,会进入最后一次循环,把number减到0并打印。
  • ChatGPT的错误在于漏算了0的打印——0是偶数,符合number % 2 == 0的判断条件,所以第五次循环会触发打印。

所以Hacking With Swift的答案是对的,这段代码确实会打印5行内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:22:54