【问题标题】:C++ type rank (type conversion for signed/unsigned int)C++ 类型等级(有符号/无符号 int 的类型转换)
【发布时间】:2018-08-14 04:05:49
【问题描述】:

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

我搜索了“c++ int type rank”并找到并回答了这个问题 What does rank mean in relation to type conversion? 提到:

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

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

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

——否则,如果无符号整数类型的操作数的秩大于或等于另一个操作数类型的秩,则将有符号整数类型的操作数转换为无符号整数类型的操作数的类型.

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

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

但我在 ISO/IEC 14882:2011 中找不到任何关于有符号/无符号整数类型等级的信息。

ISO/IEC Spec 中是否有关于signed/unsigned int 类型转换的官方说明?

【问题讨论】:

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-06-23
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    相关资源
    最近更新 更多