无符号转换32位

时间:2019-06-17 15:24:01

标签: c types casting integer

在32位系统上,简单的unsigned强制转换的行为是什么?

例如,假设我有一个long var = 1(unsigned)var会将其强制转换为unsigned longunsigned int吗?

1 个答案:

答案 0 :(得分:4)

遵循C标准(6.7.2类型说明符,第2页)

  
      
  1. ...类型说明符的每个列表应为以下多集之一(定界)   用逗号分隔时,如果有多个多集   每件);类型说明符可能以任何顺序出现   与其他声明说明符混合在一起。
  2.   
...
— unsigned, or unsigned int
...
— unsigned long, or unsigned long int

因此,强制转换表达式( unsigned )中的类型说明符表示类型unsigned int

如果要转换为unsigned long,则应写( unsigned long )( usigned long int )。而且正如引号中所写,您可以使用任何类型的类型说明符顺序,例如( int long unsigned )