如何将while循环的索引变量限定为仅循环范围内可用的临时变量
实现限定索引作用域的两种原生方案
C/C++原生没有你示例中的temporary关键字,但有两种标准语法可以完全实现「将索引变量的作用域限制在循环相关范围、不污染外层函数作用域」的需求:
方法1:块作用域包裹(全C/C++版本通用)
直接在循环外加一层裸大括号即可形成独立作用域,括号内声明的变量不会泄露到外层:... { int i = 0; while( i < something) { if(a) i++; else i--; } } // 此处已经无法访问变量i ...方法2:改用for循环声明索引(C99及以上C版本、所有C++版本支持)
for循环初始化部分声明的变量本身作用域就仅限于循环范围,你完全可以省略for的增量表达式,在循环体内动态修改索引值,和原while逻辑完全等价:... for (int i = 0; i < something; ) { if(a) i++; else i--; } // 此处已经无法访问变量i ...
注:你示例代码中的
i++:、i--:属于笔误,实际编写时需要替换为分号i++;、i--;。
内容的提问来源于stack exchange,提问作者pqzpkaot
相关产品推荐
相关产品推荐

