在32位系统上,简单的unsigned
强制转换的行为是什么?
例如,假设我有一个long var = 1
,(unsigned)var
会将其强制转换为unsigned long
或unsigned int
吗?
答案 0 :(得分:4)
遵循C标准(6.7.2类型说明符,第2页)
- ...类型说明符的每个列表应为以下多集之一(定界) 用逗号分隔时,如果有多个多集 每件);类型说明符可能以任何顺序出现 与其他声明说明符混合在一起。
...
— unsigned, or unsigned int
...
— unsigned long, or unsigned long int
因此,强制转换表达式( unsigned )
中的类型说明符表示类型unsigned int
。
如果要转换为unsigned long
,则应写( unsigned long )
或( usigned long int )
。而且正如引号中所写,您可以使用任何类型的类型说明符顺序,例如( int long unsigned )
。