以下哪个循环语句会无限次执行?( )
答案B。for循环体可能一次都不执行(当初始条件不满足时)。这是初学者容易犯的错误。
区分三种循环:for(适合固定次数)、while(适合条件控制)、do-while(至少执行一次)。
【考点】循环结构|布尔类型运算|比较运算符
🎯 考纲定位 GESP 二级 C++ 语言程序设计模块,考查 for 循环语法与条件判断。命题人专挑 bool 类型这个"看似简单实则诡异"的考点——它卡住的是考生对 C++ 隐式转换与自增运算的模糊认知,很多人凭直觉以为 bool 会像 int 一样累加,却没意识到++对布尔值的特殊定义。
🧠 解题思维 逐条分析循环条件与终止点:A 中 a=0 时条件 a 即 false,循环不执行;C 中 c 从'A'(65) 增到'z'(122) 共 57 次,正常终止;D 中 d 每次加 0.001,10000 次后 d≈10.0 条件失效;唯有 B:b 初始 false,b++ 对布尔值执行按位加 1,false(0)++→true(1),true++ 溢出回 false(0),如此往复。条件 b <= true 对 0 和 1 恒为真,故无限循环。
🪤 陷阱拆解 B 选项是典型"认知陷阱":命题人利用考生对++运算的惯性思维——看到 b++ 下意识联想到数值累加,却忽略了布尔类型中++的本质是"按位加 1",导致 false↔true 切换。更阴险的是条件 b <= true,它看似会随 b 变化而失效,实则无论 b 为 false 还是 true,b <= true 永远为真。如果你只背"循环条件为假时退出"的结论,不理解布尔比较与++的底层定义,就会误判 B 能正常结束。
🔄 反命题思维 若将 B 的条件改为 b < true,循环会在 b 变为 true 时终止;若把 b++ 换成 b = true,b 恒为 true 条件仍成立但失去切换意义。刷到类似题先问自己:这个类型的++到底做什么?条件是否真的会变假?