在循环之外使用for循环变量是错误的吗?
Is it wrong to use a for loop variable outside the loop?
例如,考虑以下代码:
#include <iostream>
int main() {
for( int i=0; i<10; i++ );
// USING i OUTSIDE for LOOP
std::cout << i;
return 0;
}
当我在g++下编译它时,它说"名称查找' i '更改为ISO ' for '作用域,(如果您使用' -fpermissive ' g++将接受您的代码)"
我认为问题是范围。变量i在for范围内声明,并在该范围外使用。当我提出要求时,我们的老师允许这样做。是错的吗?
ISO 'for'作用域指的是c++标准。在旧的标准中(或者更可能是支持它的旧编译器),循环变量的作用域是包含for语句的作用域。然而,这改变了,这就是为什么你得到这个错误。
关于这类错误提到-fpermissive的一般提示:导致这些消息的结构通常是(长)过时的,并且被旧标准或旧编译器允许。因此,存在依赖于过时行为的旧代码。你不应该编写需要这个选项的新代码;
是不对的。如果你想在循环外使用一个值,请在循环外定义它。
int i;
for (i=0; i<10; ++i);
std::cout << i << "n";
变量i
没有在循环外定义。这会导致编译时错误。你可以这样做:
int i = 0;
for(i; i < 10; ++i);
std::cout << i;
在这种情况下,i
被定义在for-loop
之外,所以我可以"看到"它
是的,在现代c++标准中,使用for循环中声明的变量是不可能的。要了解更多细节,您可以参考cplusplus.com,这是一个包含基于最近标准变化的所有信息的网站。我个人的建议是,不要盲目地听从别人的建议,自己去探索,然后模仿别人的变化。
相关文章:
- 带有开关语句的 do-while 循环 -- 无穷循环错误
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 我在 c ++ 中有一个循环错误
- 无法发现嵌套的循环错误
- CPP 在读取结构数据时无限循环错误?
- 虽然循环错误:"Uninitialized local variable used"
- 如何修复关卡顺序遍历问题(二叉树)的无限循环错误
- 随机密码生成器的C++循环错误"以非零状态退出"
- <BadPtr> 循环错误
- 试图在C++中验证双精度有效输入的循环错误
- c++中的switchcase无限循环错误
- 文件IO循环错误
- for循环错误地输出指数
- 输入 Ctrl+Z 结束阅读单词将导致循环错误
- C++教授无法弄清楚的循环错误
- C++If循环错误
- 建议处理while循环错误
- 使用自动输入循环错误"auto must have an initializer"
- 输入数字时出现循环错误
- C++ "if"循环中的循环错误