C ++类型rank(signed / unsigned int的类型转换)

时间:2018-03-06 10:21:25

标签: c++ c++11 types c++14 rank

我对两个有符号/无符号整数之间的类型转换感到困惑。为什么有符号和无符号整数具有相同的类型等级?

我搜索了“c ++ int type rank”并找到并回答了这个问题 提到的drop

  

从C ++ 11标准(草案n3337)§5/ 9 ::

     

- 如果两个操作数具有相同的类型,则不需要进一步转换。

     

- 否则,如果两个操作数都有有符号整数类型或两者都有无符号整数类型,则具有较小整数转换等级类型的操作数应转换为具有更高等级的操作数类型。

     

- 否则,如果具有无符号整数类型的操作数的秩大于或等于另一个操作数的类型的等级,则带有符号整数类型的操作数应转换为具有无符号整数类型的操作数的类型

     

- 否则,如果带有符号整数类型的操作数的类型可以表示具有无符号整数类型的操作数类型的所有值,则带有无符号整数类型的操作数应转换为带有signed的操作数的类型整数类型。

     

- 否则,两个操作数都应转换为无符号整数类型,对应于带有符号整数类型的操作数类型。

但我在ISO / IEC 14882:2011中找不到有关signed / unsigned int类型排名的任何内容。

ISO / IEC Spec中是否有正式的有符号/无符号int类型转换描述?

1 个答案:

答案 0 :(得分:0)

Henri Menke在http://eel.is/c++draft/conv.rank找到了文档,但我在下面列出了相关部分。

  

1.4任何无符号整数类型的等级应等于相应有符号整数类型的等级。

     

1.6 char的等级应等于signed char和unsigned的等级