`int` 总是有符号的吗?
Is `int` always signed?
我一直认为在C中,int
代表signed int
;但我听说这种行为是特定于平台的,在某些平台中,int
默认为 unsigned
。是真的吗?标准是怎么说的,它是否随着时间的推移而演变?
你说的很对。根据 C11
(最新的 c 标准),章节 §6.7.2
int
, signed
, or signed int
被归类为相同的 type(确切地说是类型说明符)。因此,int
与 signed int
相同。
此外,从第 6.2.5/P4 章再次重申相同内容
There are five standard signed integer types, designated as signed char
, short
int
, int
, long int
, and long long int
. (These and other types may be
designated in several additional ways, as described in 6.7.2.) [....]
因此,对于任何符合标准的环境,int
代表 signed int
,反之亦然。
根据 this 维基百科文章,int
是一种有符号整数数据类型,其大小至少为 16 位。
int
、signed
、signed int
都是同一类型。
int
的确切形式是 实现特定的;范围必须至少为 -32767 到 +32767。范围没有上限。另请注意,补码方案 也可能有所不同:如今 2 的补码很常见,尽管也允许 1 的补码和带符号的幅度。
我一直认为在C中,int
代表signed int
;但我听说这种行为是特定于平台的,在某些平台中,int
默认为 unsigned
。是真的吗?标准是怎么说的,它是否随着时间的推移而演变?
你说的很对。根据 C11
(最新的 c 标准),章节 §6.7.2
int
,signed
, orsigned int
被归类为相同的 type(确切地说是类型说明符)。因此,int
与 signed int
相同。
此外,从第 6.2.5/P4 章再次重申相同内容
There are five standard signed integer types, designated as
signed char
,short int
,int
,long int
, andlong long int
. (These and other types may be designated in several additional ways, as described in 6.7.2.) [....]
因此,对于任何符合标准的环境,int
代表 signed int
,反之亦然。
根据 this 维基百科文章,int
是一种有符号整数数据类型,其大小至少为 16 位。
int
、signed
、signed int
都是同一类型。
int
的确切形式是 实现特定的;范围必须至少为 -32767 到 +32767。范围没有上限。另请注意,补码方案 也可能有所不同:如今 2 的补码很常见,尽管也允许 1 的补码和带符号的幅度。