C++如何在while循环条件内声明变量并实现循环后销毁?
实现循环内变量的作用域限制
在C++里,要让result仅存在于循环周期内、结束后立即销毁,有两种可行方案:
方案1:使用C++17带初始化的while循环(推荐)
C++17及以上版本支持在while循环的条件部分加入初始化语句,声明的变量作用域仅覆盖整个循环结构(包括条件判断和循环体),循环结束后会自动销毁。修改后的代码如下:
while (int result = fullBottles / numExchange; result >= numExchange) { ans += result; fullBottles = result; }
这种写法完全符合你想要的简洁性,同时严格限制了变量的作用域。
方案2:嵌套代码块兼容旧标准
如果你的编译器不支持C++17,可以用一个额外的代码块包裹原循环,手动限定result的作用域:
{ int result = 0; while ((result = fullBottles / numExchange) >= numExchange) { ans += result; fullBottles = result; } } // 代码块结束后,result被销毁
内容的提问来源于stack exchange,提问作者kevin peterson
相关产品推荐
相关产品推荐

