Oracle® Developer Studio 12.5: C ユーザーズガイド

印刷ビューの終了

更新: 2016 年 7 月
 
 

2.7 long long データ型

-std=c89 を使用してコンパイルすると、Oracle Developer Studio C コンパイラは、データ型 long に似たデータ型 long long および unsigned long long を含めます。-m32 を使用してコンパイルすると、long long データ型には 64 ビットの情報が格納され、long には 32 ビットの情報が格納されます。-m64 を使用してコンパイルすると、long データ型には 64 ビットが格納されます。long long データ型は -std=c89 -pedantic では使用できません (警告が発行されます)。

2.7.1 long long データ型の入出力

long long データ型を出力または入力するには、変換指定子の前に ll の接頭辞を付けてください。たとえば、long long データ型を持つ変数 llvar を符号付き 10 進形式で出力するには、次のように指定します。

printf("%lld\n", llvar);

2.7.2 通常の算術変換

一部のバイナリ演算子は、結果の型でもある共通の型を生成するために、オペランドの型を変換します。これらの変換は、通常の算術変換と呼ばれます。-std=c11 の場合、通常の算術変換は 9899:2011 ISO/IEC C プログラミング言語規格に定義されています。-std=c99 の場合、通常の算術変換は 9899:1999 ISO/IEC C プログラミング言語規格に定義されています。-std=c89 -pedantic の場合、通常の算術変換は、9899:1990 ISO/IEC C プログラミング言語に定義されています。-std=c89 -pedantic=no および -Xs フラグの場合、通常の算術変換は、次のように定義されます。

  • どちらか一方のオペランドが 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 に変換されます。

    • それ以外の場合、–m64 でコンパイルするとき、1 つのオペランドが long int 型を持ち、もう一方が unsigned int 型を持つ場合、両方のオペランドは unsigned long int に変換されます。

    • 一方のオペランドが long int 型を持つ場合、もう一方のオペランドは long int に変換されます。

    • 一方のオペランドが unsigned int 型を持つ場合、もう一方のオペランドは unsigned int に変換されます。

    • それ以外の場合、両方のオペランドが int 型を持ちます。