Sun ANSI C コンパイラにはデータ型 long long および unsigned long long があり、これらはデータ型 long と類似しています。long には 32 ビットの情報を格納できるのに対し、long long には 64 ビットの情報を格納できます。long long は -Xc モードでは使用できません。
long long データ型を出力または入力するには、変換指定子の前に "ll" の接頭辞を付けてください。たとえば、long long データ型をもつ変数 llvar を符号付き 10 進形式で出力するには、次のように指定します。
printf("%lld¥n", llvar);
2 項演算子によっては、両方のオペランドの型を共通の型にするために変換することがあります。この時、結果の型も共通の型となります。この変換は通常の算術変換と呼ばれます。
どちらか一方のオペランドが long double 型である場合、もう一方のオペランドは long double に変換されます。
一方のオペランドが double 型を持つ場合、もう一方のオペランドは double に変換されます。
一方のオペランドが float 型を持つ場合、もう一方のオペランドは float に変換されます。
これ以外の場合は、汎整数拡張が両方のオペランドで実行されます。次に以下の規則が適用されます。
一方のオペランドが unsigned long long int 型を持つ場合、もう一方の演算子は unsigned long long int に変換されます。
一方のオペランドが long long int 型を持つ場合、もう一方の演算子は long long int に変換されます。
一方のオペランドが unsigned long int 型を持つ場合、もう一方の演算子は unsigned long int に変換されます。
一方のオペランドが long int 型を持ち、もう一方が unsigned int 型を持つ場合、両オペランドは unsigned long int に変換されます。
一方のオペランドが long int 型を持つ場合、もう一方のオペランドは long int に変換されます。
一方のオペランドが unsigned int 型を持つ場合、もう一方のオペランドは unsigned int に変換されます。
これ以外の場合、両オペランドは int 型になります。