-2

4 个字节的 long 如何比 int 有更宽的范围?来源: http: //lwn.net/images/pdf/LDD3/ch11.pdf

4

2 回答 2

3

该 PDF 部分的重点是涵盖基础类型不同的情况int。Linux 可以在各种机器上运行,比如手表和我的工作中价值数百万美元的大型主机。long

例如, on alpha, ia64and x86_64(来自第 289 页的表格)int是 4 个字节和long8 个字节:

        Size:
arch    char short int long ptr long-long u8 u16 u32 u64
======  ==== ===== === ==== === ========= == === === ===
i386       1     2   4    4   4         8  1   2   4   8
alpha      1     2   4    8   8         8  1   2   4   8
armv4l     1     2   4    4   4         8  1   2   4   8
ia64       1     2   4    8   8         8  1   2   4   8
m68k       1     2   4    4   4         8  1   2   4   8
mips       1     2   4    4   4         8  1   2   4   8
ppc        1     2   4    4   4         8  1   2   4   8
sparc      1     2   4    4   4         8  1   2   4   8
sparc64    1     2   4    4   4         8  1   2   4   8
x86_64     1     2   4    8   8         8  1   2   4   8

因此,您的问题标题是一个谬误。四字节(或八字节)long几乎肯定会比两字节(或四字节)的范围更广int

请参阅该 PDF 中的以下引用:

问题是当您需要“2 字节填充符”或“表示 4 字节字符串的东西”时,您不能使用标准类型,因为普通 C 数据类型在所有体系结构上的大小都不相同。

于 2013-03-13T05:38:18.640 回答
0

int并且float具有相同的位数,但使用不同的数字表示方式:

float使用https://en.wikipedia.org/wiki/IEEE_floating_point

int(通常)使用http://en.wikipedia.org/wiki/Two%27s_complement

于 2013-05-20T15:10:13.120 回答