memset による float 配列の初期化

Memset は int を受け取りますが、それを unsigned char にキャストしてから、float (sizeof(float) はおそらく 4) の各バイトをそのビット パターンで埋めます。これが C++ の場合は、代わりに fill を使用してください:

#include <algorithm>
using namespace std;

//...

fill (arry,arry+3,10.0);

double を int にキャストすると、2 進数 00001010 (2 進数で 10) が作成され、これが memset される値になります。これは char であるため、各フロートは実際にはビット パターン 00001010 00001010 00001010 00001010 を受け取っています。


いいえ、memset は 1 バイトを取り、それを配列に書き込みます。 float はマルチバイト型です。

編集:はい、私は memset が int を取ることを知っています。ただし、unsigned char (1 バイト) のみを使用して埋めます。