我一直认为在C中,int
代表signed int
;但我听说这种行为是特定于平台的,在某些平台上,int
默认为unsigned
。这是真的吗?什么说标准,并随着时间的推移而演变?
答案 0 :(得分:12)
你是对的。根据{{1}}(最新的c标准),章节§6.7.2
C11
,int
或signed
被归类为相同的类型(确切地说是类型说明符)。因此,signed int
与int
相同。
另外,从章节§6.2.5/ P4
重新编写相同的内容有五种标准有符号整数类型,指定为
signed int
,signed char
,short int
,int
和long int
。 (这些和其他类型可能是 如6.7.2中所述,以其他几种方式指定。)[....]
因此,对于任何符合要求的环境,long long int
代表int
,反之亦然。
答案 1 :(得分:6)
int
,signed
和signed int
都属于同一类型。
int
的确切形式是具体实施;范围必须至少为-32767至+32767。范围没有上限。另请注意,补充方案也可能有所不同:2的补码现在很常见,但也允许使用1的补码和带符号幅度。
答案 2 :(得分:2)
根据this维基百科文章,signed int
是一个有符号整数数据类型,其大小至少为16位。