`int`总是签名吗?

时间:2017-06-19 07:44:13

标签: c int language-lawyer signed

我一直认为在C中,int代表signed int;但我听说这种行为是特定于平台的,在某些平台上,int默认为unsigned。这是真的吗?什么说标准,并随着时间的推移而演变?

3 个答案:

答案 0 :(得分:12)

你是对的。根据{{​​1}}(最新的标准),章节§6.7.2

  
      
  • C11intsigned
  •   

被归类为相同的类型(确切地说是类型说明符)。因此,signed intint相同。

另外,从章节§6.2.5/ P4

重新编写相同的内容
  

有五种标准有符号整数类型,指定为signed intsigned charshort intintlong int 。 (这些和其他类型可能是   如6.7.2中所述,以其他几种方式指定。)[....]

因此,对于任何符合要求的环境,long long int代表int,反之亦然。

答案 1 :(得分:6)

intsignedsigned int都属于同一类型。

int 的确切形式是具体实施;范围必须至少为-32767至+32767。范围没有上限。另请注意,补充方案也可能有所不同:2的补码现在很常见,但也允许使用1的补码和带符号幅度。

答案 2 :(得分:2)

根据this维基百科文章,signed int是一个有符号整数数据类型,其大小至少为16位。