Oracle Solaris Studio 12.2: C ユーザーガイド

7.3.9 sizeof( ) は符号なし long

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


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

%
warning: 64-bit constant truncated to 8 bits by assignment
warning: initializer does not fit or is out of range: 0x190