我有一个重载函数,它可以采用两种参数类型:int
和double
。当我使用可以返回int
或double
的三元评估它时,它始终使用double
版本。那是为什么?
#include<iostream>
using namespace std;
void f(int a)
{
cout << "int" << endl;
}
void f(double a)
{
cout << "double" << endl;
}
int main()
{
string a;
cin >> a;
f(a=="int" ? 3 : 3.14159);
return 0;
}
答案 0 :(得分:8)
三元运算符始终进行类型提升(单一类型)。所以如果一个结果是int而另一个是double,结果是?歌剧将永远是双倍的。