Oracle® Solaris Studio 12.4: C ユーザーガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

2.6.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 型を持ちます。