c++ - 'while' 和 'for' 循环的范围是什么?

标签 c++ c

whilefor 循环的范围是什么?

例如,如果我在循环中声明了一个对象,它的行为是什么,为什么?

最佳答案

在以下示例中,除了 i 之外,所有变量都在循环的每次迭代中被销毁并重新创建,i 在循环迭代之间持续存在并且可用于 for 循环中的条件表达式和最终表达式。在循环之外没有任何变量可用。 for 循环体内的变量在 i 递增之前销毁。

while(int a = foo()) {
    int b = a+1;
}

for(int i=0;
    i<10;     // conditional expression has access to i
    ++i)      // final expression has access to i
{
    int j = 2*i;
}

至于为什么;循环实际上只为它们的主体使用一个语句,只是碰巧有一个由花括号创建的称为复合语句的语句。在任何复合语句中创建的变量的范围仅限于复合语句本身。所以这确实不是循环的特殊规则。

循环和选择语句对于作为循环或选择语句本身的一部分创建的变量确实有自己的规则。这些只是根据设计师认为最有用的东西设计的。

关于c++ - 'while' 和 'for' 循环的范围是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7880658/

相关文章:

c - 以跨平台方式导出共享库符号?

c - 嵌套 For 循环发牌

c - 错误 : implicit declaration of function 'rl_replace_line' is invalid in C99 [-Werror, -W 隐式函数声明]

c - scanf 将数组传递给函数后出现段错误

c++ - 从 unsigned int 转换为 uint16_t 时发生转换错误

C++11:std::bind 因 lambda 而崩溃

c++ - 迭代 std::map,做错事,提示迭代器缺少 '=' 运算符

c++ - 有没有一种同时按键和值进行搜索的好方法?

c++ - 使用 boost::lambda::bind 有什么问题?

c++ - sqlite blob(由 c/c++ 数组组成)是否与平台无关?