相关疑难解决方法(0)

为什么编译器将"char"与"int"匹配而不是"short"?

我有一个小程序:

#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将导致到编译器宁愿intshort

如果我删除f(int),那么f(c)会打电话f(short)!

总而言之,我的问题是,它是与"整数提升"还是仅仅是"超载解决规则"有关?为什么?

c++ overloading type-conversion

69
推荐指数
2
解决办法
3266
查看次数

标签 统计

c++ ×1

overloading ×1

type-conversion ×1