【发布时间】:2015-08-09 21:52:51
【问题描述】:
来自 C++11 标准(草案 n3337)§5/9:
——如果两个操作数的类型相同,则不再进行转换 需要。
— 否则,如果两个操作数都具有有符号整数类型或两者都具有 无符号整数类型,具有较小整数类型的操作数 转换 rank 应转换为操作数的类型 更高的排名。
— 否则,如果具有无符号整数类型的操作数具有 rank 大于或等于另一个操作数类型的rank, 带符号整数类型的操作数应转换为 无符号整数类型的操作数。
——否则,如果带符号整数类型的操作数的类型可以 用无符号表示操作数类型的所有值 整数类型,无符号整数类型的操作数应为 转换为有符号整数类型的操作数的类型。
——否则,两个操作数都应转换为无符号整数 type 对应于带符号整数的操作数的类型 输入。
在这种情况下排名是什么意思?
肯定不是指std::rank,
因为这与数组中的维数有关......
就整数类型和浮点类型而言,我认为是指它们的潜在大小。
C++ 标准保证:
1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
我是否正确地假设当时的排名是:
<strong>Rank</strong><strong>Type</strong> 1 char 2 short 3 int
@987654332 @long 5 long long
...
我无法在任何地方找到描述每种类型排名级别的list。
【问题讨论】:
-
参见 4.13/p1 ([conv.rank])。
-
@0x499602D2 是的,这就是我要找的。span>
-
在 C 规范中:6.3.1.1 布尔值、字符和整数
标签: c++ implicit-conversion type-conversion rank