必须加{},因编译器仅将循环关键字后首行语句视为循环体,后续增逻辑或调缩进易致隐蔽bug。

要加,强烈建议始终加上大括号,哪怕循环体只有一句。
为什么单行 for/while 也必须加 {}
语法上允许省略,但编译器只把紧贴在循环关键字后面、没有分号隔开的**第一行语句**当作循环体。一旦后续加了新逻辑,或只是调整缩进,就极易引入隐蔽 bug。比如:
for (int i = 0; i <p>这种错误不会报错,但结果完全不对——<code>sum</code> 只执行一次,且可能因 <code>i</code> 作用域问题编译失败。</p> <h3>不加大括号在哪些场景下会出问题</h3>
-
if和循环嵌套时:省略{}会导致else绑定到最近的if,而非你视觉上认为的那个 - 代码维护阶段:别人(或未来的你)想在循环里加日志、条件判断或资源操作,没括号就得先补括号再改,容易漏掉或格式错乱
- 静态分析工具(如 clang-tidy)默认警告
cppcoreguidelines-pro-bounds-for-range类规则,不加括号直接被标为 style violation - 团队协作中,主流 C++ 风格指南(Google、Microsoft、ISO C++ Core Guidelines)全部明确要求:任何控制结构的语句块都必须使用
{}
实际写法对比:加 vs 不加
推荐写法(清晰、安全、可扩展):
for (int i = 0; i <p>不推荐写法(看似简洁,实则脆弱):</p> <pre class="brush:php;toolbar:false;">for (int i = 0; i <p>注意:<code>process(data[i])</code> 是单行,但一旦某天需要加错误检查:</p> <pre class="brush:php;toolbar:false;">for (int i = 0; i <p>——这个改动在有括号基础上是自然演进;若原来没括号,就得先定位、补括号、再缩进,多一步就多一个出错机会。</p> <p>真正容易被忽略的不是“要不要加”,而是“加了之后是否保持作用域最小化”——比如把 <code>int i</code> 放在 <code>for</code> 初始化中,而不是提前声明在外部,避免变量污染和误用。</p>
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











