【发布时间】:2016-04-01 21:52:06
【问题描述】:
char cval;
short sval;
long lval;
sval + cval; // sval and cval promoted to int
cval + lval; // cval converted to long
这是一段关于 C++ Primer 的代码。
我知道sval+cval根据
将较小的整数类型转换为较大的整数类型。类型 bool、char、signed char、unsigned char、short 和 unsigned short 是 如果该类型的所有可能值都适合 int,则提升为 int。
但对于最后一个,我不明白为什么它使用“转换”。为什么cval 没有先提升为int 然后int 转换(或者可能提升我不确定提升是否可以从int 使用到long,因为我只看到较小的提升定义键入int) 到long。在本书的那部分,我没有直接看到char 到long 的任何解释或示例。
我的理解有什么问题吗?
我是C ++的新手,请赐教!非常感谢!
【问题讨论】:
标签: c++ integer-promotion