5

を使用してfloatにメモリを割り当てるコードが表示されていますsizeof(int)。すべてのアーキテクチャで 常に等しい
かどうか疑問に思っていますか?sizeof(float)sizeof(int)

float *pointer2Float = (float *) USER_DEFINED_MALLOC (...,..., sizeof(int))

注:これUSER_DEFINED_MALLOCは従来のmallocのラッパーだと思います。

ありがとう

よろしく

4

6 に答える 6

18

intいいえ、16ビットと32ビットの実装(主に組み込みシステム)がありますfloat

そしてもちろん、サイズは標準ごとにかなり異なることが許可されています。

于 2012-08-06T17:35:14.253 に答える
7

すべてのタイプ(、、および1を除く)のサイズcharsigned char実装unsigned charによって定義されます。したがって、すべてのプラットフォームで同じになるとは限りません。sizeof(float)sizeof(int)

1.のサイズcharとそのすべてのバリアントは、標準で1バイトと定義されています。ただし、1バイトのビット数は実装によって定義されます。

于 2012-08-06T17:36:38.903 に答える
4

いいえ、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 ビット組み込みシステムはint16 ビット幅でsizeof (int)2 ですが、浮動小数点は IEEE-754 に従い、float32ビット幅sizeof (float)で 4 です。

于 2012-08-06T17:42:49.150 に答える
3

いいえ。CおよびC++では、データ型はプラットフォーム固有です。一般的に、これは次のことを意味します。

ただし、他のシステムの場合、一般的な仕様では、intはシステムアーキテクチャによって提案される自然なサイズ(1つの「ワード」)であり、char、short、int、およびlongの4つの整数型は、それぞれ少なくとも前の整数型と同じ大きさである必要があります。 charは常に1バイトのサイズです。同じことが浮動小数点型float、double、およびlong doubleにも当てはまり、それぞれが少なくとも前のものと同じ精度を提供する必要があります。

データ型から取得)

多くのプラットフォームでは、floatとintはどちらも32ビットであることがよくありますが、常にそうであるとは限らず、実際の仕様の一部でもありません。

于 2012-08-06T17:37:06.093 に答える
2

sizeof (float)に等しいという保証はまったくありませんsizeof (int)。上記はコーディングエラーだと思います。

またはのいずれかを優先して使用する必要があります。 sizeof *ptrToFloatsizeof (int)sizeof (float)

于 2012-08-06T17:37:44.093 に答える
0

データ型のサイズが非常に重要なマルチ プラットフォームを作成している場合は、次のようなヘッダー ファイルを作成できます。

#define INT sizeof(int)
#define FLOAT sizeof(float)
.
.
.

アーチをごまかすのはトリックです。

于 2012-08-06T20:05:18.847 に答える