我知道long和int之间的区别 但是“long long”和“long int”之间有什么区别
答案 0 :(得分:25)
内置类型有几个简介。
short
是(signed
)short int
long
是(signed
)long int
long long
是(signed
)long long int
。在许多系统上,short
为16位,long
为32位,long long
为64位。但是,请记住,标准只需要
sizeof(char) == 1
sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
这样做的结果是,在异域系统上,sizeof(long long) == 1
是可能的。
答案 1 :(得分:10)
根据C
标准,定义整数类型以提供至少以下范围:
int -32767 to +32767 representable in 16 bits
long -2147483647 to +2147483647 representable in 32 bits
long long -9223372036854775807 to +9223372036854775807 representable in 64 bits
每个都可以表示为支持更广泛的范围。在常见的32位系统上int
和long
具有相同的32位表示。
请注意,负边界与其正对应边对称,以允许符号和幅度表示:C语言标准不强加两个补码。
答案 2 :(得分:4)
long long
可能比long int
更重要。例如,在x86 32位long long
将是64位类型而不是long int
的32位。
答案 3 :(得分:3)
在64位系统上,它们的大小没有任何差别。在32位系统上,long long保证存储值为64位范围。
为了避免所有这些混淆,最好使用标准整数类型:(u)int16_t, (u)int32_t and (u)int64_t
通过stdint.h
提供透明度。
答案 4 :(得分:2)
16位系统上的int
为16位。引用“long
”作为32位整数,但在32位系统上long
和int
表示相同的事情(均为32位)。因此在32位和64位系统上,long long
和long int
都是64位。例外是64位UNIX,其中long
是64位。
有关更详细的表格,请参阅the integer Wikipedia article。
答案 5 :(得分:1)
除了类型需要能够表示的最小值范围之外,C标准不对积分类型做出任何特定的宽度要求,并且宽度不减小:short <= int <= long int <= long long int
(类似于无符号类型)。顺便提一下,long long
只是C99和C ++ 0x标准的一部分。可以在this Wikipedia article中找到所需的最小范围。
答案 6 :(得分:0)
long int
是long的同义词。 long long int
是long long
的同义词。
您在标准C ++中唯一的保证是long long
至少与long
一样大,但可以更长。这在标准n3242的最新公开草案中的§3.9.1.2中有详细说明。
答案 7 :(得分:0)
我想:
“long”将分配给数据类型的位数加倍。 那么长(32位?)变成64位。 Int(16位?)变为32位。