我正在尝试编译我的代码我收到以下错误:
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;
}
答案 0 :(得分:1)
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;
}
答案 1 :(得分:0)
问题是变量x
确实是for
循环的局部变量,不能在它之外使用。
显然G ++有一个扩展,允许在循环之外使用“index”变量,但你必须添加-fpermissive
标志才能允许它。但请注意,-fpermissive
标志还允许其他不适合“C ++”的东西。
答案 2 :(得分:0)
这是有问题的一行:
cout <<"the value of x"<<x<<endl;
这有问题,因为它在for循环体外使用变量x。
要解决问题,要么将cout行放在for循环中,要么在for行之前声明x值,而不是作为其一部分。