【发布时间】:2016-12-15 17:27:27
【问题描述】:
阅读整数提升和整数转换排名我发现了这个link
1.如果两个操作数的类型相同,则不需要进一步转换。
2.否则,如果两个操作数都是有符号整数类型或都具有无符号整数类型,则操作数类型为较小整数 转换等级转换为具有更大的操作数的类型 排名。
3.否则,如果具有无符号整数类型的操作数的秩大于或等于另一个操作数的类型的秩,则 带符号整数类型的操作数转换为 无符号整数类型的操作数。
4.否则,如果带符号整数类型的操作数可以表示无符号操作数类型的所有值 整数类型,然后转换无符号整数类型的操作数 为有符号整数类型的操作数的类型。
5.否则,两个操作数都转换为无符号整数类型,对应带符号整数类型的操作数。
第 1 2 3 点非常清楚,但我仍然没有为案例 4 和 5 提供示例。有人可以提供有关任何实现的示例吗?
据我所知整数转换等级是:
_Bool
无论与类型相关的字节大小相等或更高。对吧?
关于从一种类型到另一种类型的提升或转换。添加到最低类型 0 或 1 或左极端位的位是否对此有影响?
我想知道位视图中的过程是怎样的,尤其是转换。
对于整数提升,它总是可以毫无疑问地保存值和符号。
【问题讨论】:
-
在 bits 视图中没有多大意义,因为位模式在整数提升中几乎没有变化。
-
它们总是用零位填充这是你想说的,它不是实现定义的吗? @EugeneSh。
-
如果那是来自标准的(不是),引用段落等。只是链接一些网站是没有用的。这与标准有很大不同。另请注意,C 标准仅适用于 C11。
-
@Olaf:由于您对标准的了解比我多,您可以将网站中不符合标准的错误部分提供给我们。你绝对可以帮助我们。
-
我认为纠正互联网上的任意网站不是我的任务。只需写他们应该 RTFS 标准的作者。
标签: c integer type-conversion