C ユーザーズガイド

sizeof() は unsigned long

LP64 データ型モデルでは、sizeof() の有効な型は unsigned long です。sizeof() は、ときには int 型の引数を待つ関数に渡されたり、整数に代入あるいは型変換されたりします。そうした場合は、切り捨てによってデータが失われることがあります。


long a[50];
unsigned char size = sizeof (a);

%
警告: 代入によって 62 ビット定数が 8 ビットに切り捨てられました
警告: 初期設定子が適合していないか範囲を超えています: 0x190