我有一个小程序:
#include<iostream>
using namespace std;
void f(int) { cout << "int\n"; }
void f(short) { cout << "short\n"; }
int main(void){
char c = 0;
f(c);
return 0;
}
它打印int
。我觉得,如果这是因为“整数提升”,为什么不是short
首选?
我也知道整数提升发生在表达式中(例如A = B)。但是我没有表达对f(),
权利的呼吁吗?
如果这是关系到重载解决规则,为什么传递char
到F将导致到编译器宁愿int
到short
?
如果我删除的f(int)
话f(c)
会打电话给f(short)
!
因此,总而言之,我的问题是,它与“整数提升”还是“过载解决规则”有关?又为什么呢