错误:ISO ' for '作用域更改了' x '的名称查找
Error: name lookup of ‘x’ changed for ISO ‘for’ scoping
我正在尝试编译我的代码,我得到以下错误:
error: name lookup of ‘x’ changed for ISO ‘for’ scoping [-fpermissive]
note: (if you use ‘-fpermissive’ G++ will accept your code)
有谁能帮我一下吗?提前感谢。int main() {
int a,m;
cout << "Enter values of a and m:" << endl;
cin >> a >> m;
a %= m;
for(int x = 1; x < m; x++)
{
if((a*x) % m == 1)
return x;
}
cout << "the value of x" << x << endl;
}
x
的作用域仅限于for循环,因为您在那里声明了它。如果您想在外部使用它,请在适当的范围内声明它,如下所示:
int main() {
int a,m;
cout << "Enter values of a and m:" << endl;
cin >> a >> m;
a %= m;
int x;
for(x=1; x < m; x++)
{
if((a*x) % m == 1)
return x;
}
cout <<"the value of x"<<x<<endl;
}
问题是变量x
实际上是for
循环的局部,并且不能在它之外使用。
显然,g++有一个扩展允许在循环之外使用"index"变量,但是您必须添加-fpermissive
标志才能允许它。但请注意,-fpermissive
标志也允许其他不"适当"的c++操作。
这是有问题的一行:
cout <<"the value of x"<<x<<endl;
这是有问题的,因为它在for循环体之外使用了变量x。
要解决这个问题,要么将cout行放在for循环中,要么在for行之前声明x值,而不是将其作为for行的一部分。
相关文章:
- 未在作用域中声明unordered_map
- 有没有一种方法可以在编译时获得作用域类名
- C++quit()函数中可能存在作用域问题
- 未在此作用域OpenCV3.4中声明cvSaveImage
- 全局作用域中函数指针的赋值
- 在类函数中初始化外部作用域变量
- 不同作用域中的静态变量和全局变量
- 是同一作用域的函数部分中的函数调用
- 未在此作用域中声明的函数和变量 (C++)
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- 将作用域枚举转换为基础类型
- 表达式必须具有完整或无作用域的枚举图
- 在构造函数中输入对象时C++类成员作用域
- 无法让"std::enable_if"适用于无作用域枚举
- 为什么不能直接引用作用域枚举类成员,而不能为无作用域枚举生成类成员?
- 函数未在作用域中声明 / 如何结合使用 header.h、header.cpp 和 main.cpp?
- 错误:表达式必须具有算术、无作用域枚举或带有运算符重载的指针类型
- 如何在涉及依赖作用域的内部类时C++查找模板化函数标头
- 错误:ISO ' for '作用域更改了' x '的名称查找
- ::操作符能否出现在与限定名查找中的作用域解析不同的上下文中?