C &引用;如果一个int可以保存原始类型的所有值,那么该值将转换为int,否则转换为unsigned int"--这意味着什么?
上面这一行是关于C语言中的隐式积分提升/转换,摘自Mike Banahan的书。下面是确切的段落: C不会以小于int的精度进行任何运算,因此,几乎每当您在表达式中使用下面列出的对象之一时,都会隐含这些转换。转换定义如下: 无论何时,只要一个短字符或一个字符(或一个位字段或枚举类型 尚未见面)是否应用了积分促销C &引用;如果一个int可以保存原始类型的所有值,那么该值将转换为int,否则转换为unsigned int"--这意味着什么?,c,int,type-conversion,expression,unsigned-integer,C,Int,Type Conversion,Expression,Unsigned Integer,上面这一行是关于C语言中的隐式积分提升/转换,摘自Mike Banahan的书。下面是确切的段落: C不会以小于int的精度进行任何运算,因此,几乎每当您在表达式中使用下面列出的对象之一时,都会隐含这些转换。转换定义如下: 无论何时,只要一个短字符或一个字符(或一个位字段或枚举类型 尚未见面)是否应用了积分促销 如果int可以保存原始类型的所有值,则 值转换为整数 否则,将转换为无符号整数 以下是我对粗体部分的困惑。请澄清这些问题: “其他”部分不是多余的吗?如果int的大小大于这两种类型
- 如果int可以保存原始类型的所有值,则 值转换为整数
- 否则,将转换为无符号整数
- “其他”部分不是多余的吗?如果int的大小大于这两种类型,那么默认情况下,所有short或char类型不都应该适合int吗?short不适合int并且需要无符号int的问题是如何产生的
- “否则”部分如何有效?如果负短整数隐式转换为无符号整数,其值不会更改吗李>
int
类型(根据C标准)不必大于short
。int
只能比short
短。例如,它们都可以是16位。在这种情况下,可能存在无法放入int
的无符号short
值
(上的Wikipedia页面很有启发性。)Int可以保存short的所有值,但不一定包含unsigned short的所有值。添加对C规范的引用以改进您的答案。