代码之家  ›  专栏  ›  技术社区  ›  jasonxia

C++类型秩(有符号/无符号int的类型转换)

  •  1
  • jasonxia  · 技术社区  · 6 年前

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

    我搜索了“c++int-type-rank”,找到了问题的答案 What does rank mean in relation to type conversion? 其中提到:

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

    如果两个操作数的类型相同,则无需进一步转换。

    否则,如果两个操作数都具有有符号整数类型或都具有无符号整数类型,则整数转换秩较小的操作数类型应转换为秩较大的操作数类型。

    否则,如果具有无符号整数类型的操作数的秩大于或等于其他操作数类型的秩,则具有有符号整数类型的操作数应转换为具有无符号整数类型的操作数类型。

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

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

    但我在ISO/IEC 14882:2011中找不到任何关于有符号/无符号int型列组的信息。

    ISO/IEC规范中是否有关于有符号/无符号int类型转换的正式说明?

    1 回复  |  直到 4 年前
        1
  •  0
  •   Community    4 年前

    Henri Menke在 http://eel.is/c++draft/conv.rank 但我已经包括了下面的相关部分。

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

    1.6字符的秩应等于有符号字符和无符号字符的秩