【问题标题】:unsigned cast 32 bits无符号转换 32 位
【发布时间】:2019-10-31 05:27:54
【问题描述】:
在 32 位系统上,简单的 unsigned 转换的行为是什么?
例如,假设我有一个 long var = 1,(unsigned)var 会将其转换为 unsigned long 或 unsigned int 吗?
【问题讨论】:
标签:
c
types
casting
integer
【解决方案1】:
符合 C 标准(6.7.2 类型说明符,p.#2)
- ...每个类型说明符列表应为以下多重集之一(分隔
逗号,当有多个多重集时
每件);类型说明符可以以任何顺序出现,可能
与其他声明说明符混合使用。
...
— unsigned, or unsigned int
...
— unsigned long, or unsigned long int
所以转换表达式中的类型说明符( unsigned ) 表示类型unsigned int。
如果你想转换为unsigned long,那么你应该写( unsigned long ) 或( usigned long int )。正如引用中所写,您可以使用任何类型的说明符顺序,例如( int long unsigned )。