我有一个小程序:
#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;
}
Run Code Online (Sandbox Code Playgroud)
它打印int.我觉得,如果这是因为"整体推广",为什么不short首选?
我也知道整数提升发生在表达式中(如A = B).但是我没有接到电话中的表情f(),吗?
如果这是重载解决规则有关,为什么传递char到F将导致到编译器宁愿int到short?
如果我删除f(int),那么f(c)会打电话f(short)!
总而言之,我的问题是,它是与"整数提升"还是仅仅是"超载解决规则"有关?为什么?