[英]The error is: reference to 'max' ambiguous
我的 function 出了点问题:
#include<iostream>
using namespace std ;
int max=1;
int lcm(int i){
if(max%i==0){
}
else
for (int b=2; b<=i ; b++){
max*=b;
max/=(b-1);
if(max%i==0){
break;
}
}
}
int main(){
int n;
cin>>n;
int i[n];
for(int j =0 ; j<n; j++){
cin>>i[j];
lcm(i[j]);
}
cout<<max+1;
}
这个程序给了我几个数字的 lcm。
当我的代码中有这个问题时,我在 python 中使用 global
或者我应该让我的代码更好?
当您使用using namespace std
时会发生这种情况,您的变量max
不明确,因为它与std::max
库 function 冲突。
不要使用using namespace std
,而是使用std::cin
、 std::cout
等,或者至少使用特定的using
表达式,例如using std::cin;
.
您也可以更改变量的名称,但仍应遵循之前关于良好编码实践的注意事项。
另一件事,关于int i[n];
,可变长度 arrays 不是 C++ 标准的一部分,尽管某些编译器允许这样做,但您可能希望使用std::vector
代替。
最后, 正如@Botje 指出的那样,使用具有非空返回类型且缺少返回语句的 function 会导致未定义的行为。
这是您永远不应该using namespace std;
. 如果你这样做,它会引入 std 中的所有名称,其中包括 function std
std::max
。 这与变量int max
冲突,会给您带来歧义错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.