【发布时间】:2014-11-15 07:28:39
【问题描述】:
上面这行是关于 C 中的隐式积分提升/转换,摘自 Mike Banahan Section 2.8.1.1 (Link) 的书中。以下是确切的段落:
C 不以比 int 更短的精度执行任何算术运算,因此几乎每当您在表达式中使用下面列出的对象之一时,都会隐含这些转换。转换定义如下:
每当我们使用 short 或 char(或位域或枚举类型)时 还没见面)有没有申请积分促销
- 如果一个 int 可以保存原始类型的所有值,那么 值转换为 int
- 否则,将转换为无符号整数
这是我对粗体部分的困惑。请清除这些:
- “否则”部分不是多余的吗?鉴于 int 大于尺寸? short 不适合 int 并需要 unsigned int 的问题怎么会出现?
- “否则”部分如何有效——如果负短整数隐式转换为无符号整数,它的值不会改变吗?
虽然我很想将其视为微不足道并继续前进,但我觉得得到一个适当的解释会更好。谢谢你。
【问题讨论】:
-
Int 可以保存所有的 short 值,但不一定是所有 unsigned short 的值。
标签: c int type-conversion expression unsigned-integer