を使用してfloatにメモリを割り当てるコードが表示されていますsizeof(int)
。すべてのアーキテクチャで 常に等しい
かどうか疑問に思っていますか?sizeof(float)
sizeof(int)
float *pointer2Float = (float *) USER_DEFINED_MALLOC (...,..., sizeof(int))
注:これUSER_DEFINED_MALLOC
は従来のmallocのラッパーだと思います。
ありがとう
よろしく
int
いいえ、16ビットと32ビットの実装(主に組み込みシステム)がありますfloat
。
そしてもちろん、サイズは標準ごとにかなり異なることが許可されています。
すべてのタイプ(、、および1を除く)のサイズchar
はsigned char
実装unsigned char
によって定義されます。したがって、すべてのプラットフォームで同じになるとは限りません。sizeof(float)
sizeof(int)
1.のサイズchar
とそのすべてのバリアントは、標準で1バイトと定義されています。ただし、1バイトのビット数は実装によって定義されます。
いいえ、sizeof (int)
値sizeof (float)
は実装定義であり、同じであるとは限りません。
2 つの値が異なるシステムの例を次に示します。
Cray MPP システムの場合:
sizeof (int) is 8
sizeof (float) is 4
ここを参照してください:
「Cray C/C++ リファレンス マニュアル」、表 3.「9.1.2.2 型」の Cray Research システムのデータ型マッピング
http://docs.cray.com/books/004-2179-003/004-2179-003-manual.pdf
また、ほとんどの 8 ビット組み込みシステムはint
16 ビット幅でsizeof (int)
2 ですが、浮動小数点は IEEE-754 に従い、float
32ビット幅sizeof (float)
で 4 です。
いいえ。CおよびC++では、データ型はプラットフォーム固有です。一般的に、これは次のことを意味します。
ただし、他のシステムの場合、一般的な仕様では、intはシステムアーキテクチャによって提案される自然なサイズ(1つの「ワード」)であり、char、short、int、およびlongの4つの整数型は、それぞれ少なくとも前の整数型と同じ大きさである必要があります。 charは常に1バイトのサイズです。同じことが浮動小数点型float、double、およびlong doubleにも当てはまり、それぞれが少なくとも前のものと同じ精度を提供する必要があります。
(データ型から取得)
多くのプラットフォームでは、floatとintはどちらも32ビットであることがよくありますが、常にそうであるとは限らず、実際の仕様の一部でもありません。
sizeof (float)
に等しいという保証はまったくありませんsizeof (int)
。上記はコーディングエラーだと思います。
またはのいずれかを優先して使用する必要があります。 sizeof *ptrToFloat
sizeof (int)
sizeof (float)
データ型のサイズが非常に重要なマルチ プラットフォームを作成している場合は、次のようなヘッダー ファイルを作成できます。
#define INT sizeof(int)
#define FLOAT sizeof(float)
.
.
.
アーチをごまかすのはトリックです。