我对以下代码的隐式转换有疑问
#include <iostream>
using namespace std;
float max(int a, int b)
{
if (a > b)
return a;
else return b;
}
int main() {
double a, b;
cin >> a >> b;
cout << max(a, b)<<endl;
cout << a;
return 0;
}
现在假设a = 30.5 & b = 26.4
。
预期结果为30
但是在一台计算机上(MinGW&amp; VS 2005),我得到30.5
。
有人对此有解释吗?这对我没用。
编辑1:
第三行输出的是30.5而不是预期的30
解决方案
std :: max()正在遮蔽它,但为什么它会在一台计算机上影响它并且它不在另一台计算机上,我没有调查它。
因此,请尽量避免使用为标准库保留的名称来命名函数或类。
答案 0 :(得分:4)
这是什么导致奇怪的输出:
using namespace std;
致电max()
时,您可能正在调用std::max()
,<iostream>
可能无法保证cout << ::max(a, b)<<endl; //forces global scope
。试试这个:
30
应打印出{{1}}。