Solaris 64 ビット 開発ガイド

sizeofunsigned long である

LP64 環境では、sizeof は、unsigned long として実装される size_t の実効的なデータ型を持ちます。sizeof は、int 型の引数を期待する (受け取る) 関数に渡されたり、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