我有一个小程序:
#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)!
因此,总而言之,我的问题是,它与“整数提升”还是“过载解决规则”有关?又为什么呢