`int`总是签名吗?

Fre*_*ios 6 c int signed language-lawyer

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

Sou*_*osh 13

你太对了.根据C11(最新的标准),章节§6.7.2

  • int,signed或signed int

被归类为相同的类型(确切地说,类型说明符).所以,int是一样的signed int.

另外,从章节§6.2.5/ P4重新编写相同的内容

有五种标准符号整数类型,指定为signed char,short int,int,long int,和long long int.(这些和其他类型可以用其他几种方式指定,如6.7.2中所述.)[....]

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


Bat*_*eba 6

int,signed和signed int,都是相同的类型.

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