-2

long の 4 バイトが int よりも範囲が広いのはどのくらいですか? ソース: http://lwn.net/images/pdf/LDD3/ch11.pdf

4

2 に答える 2

3

その PDF セクションの要点は、intとが同じ基になる型でlong はない状況をカバーすることです。Linux は、腕時計や仕事中の数百万ドルの巨大なメイン​​フレームなど、さまざまなマシンで実行されます。

たとえば、 onalphaと(289 ページの表から)ia64は4 バイトで、8 バイトです。x86_64intlong

        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

したがって、質問のタイトルは誤りです。4 バイト (または 8 バイト)longは、ほぼ確実に 2 バイト (または 4 バイト) よりも広い範囲を持ちますint

その PDF からの次の引用を参照してください。

問題は、通常の C データ型はすべてのアーキテクチャで同じサイズではないため、「2 バイトのフィラー」または「4 バイトの文字列を表すもの」が必要な場合に標準型を使用できないことです。

于 2013-03-13T05:38:18.640 に答える
0

intビット数は同じですが、float数値の表現方法が異なります。

floathttps://en.wikipedia.org/wiki/IEEE_floating_pointを使用

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

于 2013-05-20T15:10:13.120 に答える