【发布时间】:2021-08-12 13:29:01
【问题描述】:
我知道 int 提升的工作原理是将所有内容都设为 int(或 uint)。
当我有这个功能时,这很适用:
void f(int x) { ... }
我用char 来称呼它,例如:
char c = 'A';
f(c);
但是,如果 f 是用 short 参数定义的呢?
void f(short x) { ... }
如果我现在打电话给f(c),到底会发生什么? 'A' 是否被提升为 int,然后被截断为 short?该标准似乎没有对此做出任何规定。
【问题讨论】:
-
在这两种情况下发生的不是促销,而是conversion。
-
@Someprogrammerdude:“请注意,所有其他转换都不是提升;例如,重载解析选择 char -> int(提升)而不是 char -> short(转换)。” 一个是推广,另一个是转化。
标签: c++ types type-conversion