long の 4 バイトが int よりも範囲が広いのはどのくらいですか? ソース: http://lwn.net/images/pdf/LDD3/ch11.pdf
2 に答える
3
その PDF セクションの要点は、int
とが同じ基になる型でlong
はない状況をカバーすることです。Linux は、腕時計や仕事中の数百万ドルの巨大なメインフレームなど、さまざまなマシンで実行されます。
たとえば、 onalpha
と(289 ページの表から)ia64
は4 バイトで、8 バイトです。x86_64
int
long
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
数値の表現方法が異なります。
于 2013-05-20T15:10:13.120 に答える