60

64 ビット システムでsizeof(unsigned long)は、システムによって実装されるデータ モデルによって異なります。たとえば、LLP64 (Windows) では 4 バイト、LP64 (Linux など) では 8 バイトです。あるべきものは何sizeof(size_t)ですか?データモデルによって異なりますsizeof(long)か? もしそうなら、どのように?


参考文献:

ウィキペディアの 64 ビット データ モデル

4

4 に答える 4

15

オブジェクトのサイズを表すため、アーキテクチャによって異なるはずです。したがって、32 ビット システムsize_tでは、少なくとも 32 ビット幅になる可能性があります。64 ビット システムでは、少なくとも 64 ビット幅になります。

于 2009-05-28T01:32:18.290 に答える
4

size_t は通常、64 ビット マシンでは 64 ビットです。

于 2009-05-28T01:35:36.410 に答える
3

編集:コメントをありがとう - C99 標準で調べたところ、セクション 6.5.3.4 に次のように書かれています。

結果の値は実装定義であり、その型 (符号なし整数型) は(およびその他のヘッダー)size_tで定義されています。<stddef.h>

したがって、のサイズsize_tは指定されていませんが、符号なし整数型でなければなりません。ただし、標準の 7.18.3 章に興味深い仕様があります。

の限界size_t

SIZE_MAX 65535

これは基本的に、 のサイズに関係なくsize_t、許容される値の範囲は 0 ~ 65535 であり、残りは実装に依存することを意味します。

于 2009-05-28T01:30:40.307 に答える