Sun Studio 12: C ユーザーズガイド

7.3.9 sizeof( ) は符号なし long

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


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

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