次の方法で共有


算術変換

多くの二項演算子によって(二項演算子を含む式 で説明します) オペランドおよび yield 同じ方法で変換が発生します。にはこれらの演算子での変換は「通常の算術変換」と呼ばれます。異なるネイティブ型のオペランドの算術変換は次のように実行します。型定義の型は基になるネイティブ型に従って動作します。

型変換の条件

満たされる条件

変換

いずれかのオペランドは型 long  倍精度浮動小数点型 です。

他のオペランドは long  倍精度浮動小数点型 を入力するに変換されます。

前の条件を満たさないいずれかのオペランドは型 倍精度浮動小数点型 です。

他のオペランドは 倍精度浮動小数点型 を入力するに変換されます。

前の条件を満たさないいずれかのオペランドは型 フローティング です。

他のオペランドは フローティング を入力するに変換されます。

満たさない最初の条件 (オペランドがフローティングの型ではありません)。

の整数の上位変換はオペランドに次のように行われます :

  • どちらのオペランドも型 unsigned long 場合 unsigned long を入力する場合は他のオペランドが変換されます。

  • 指定した会われない両方のオペランドが long 型と型の他 unsigned int両方のオペランド unsigned long を入力するに変換されます調整します。

  • 先行する 2 とおりの条件が満たされない場合どちらのオペランドも型 long 場合 long を入力する場合は他のオペランドが変換されます。

  • 先行する 3 とおりの条件が満たされない場合どちらのオペランドも型 unsigned int 場合 unsigned int を入力する場合は他のオペランドが変換されます。

  • 前の条件が満たされて int を入力する場合はどちらのオペランドも変換されます。

次のコードは表に示す変換規則を示しています :

// arithmetic_conversions.cpp
double dVal;
float fVal;
int iVal;
unsigned long ulVal;

int main() {
   // iVal converted to unsigned long
   // result of multiplication converted to double
   dVal = iVal * ulVal;

   // ulVal converted to float
   // result of addition converted to double
   dVal = ulVal + fVal;
}

前の例の最初のステートメントを 2 iVal整数型と ulVal の乗算を示します。条件が満たされるどちらのオペランドもフローティングの型ではないため1 番目のオペランドの型 unsigned int になります。したがって unsigned int を入力する場合は他のオペランドiVal は変換されます。結果は dVal に割り当てられます。条件が満たされている 1 種類のオペランドが 倍精度浮動小数点型 型になっています ; したがって 倍精度浮動小数点型 を入力する場合は乗算の unsigned int の結果が変換されます。

前の例の 2 番目のステートメントは フローティング と整数型の追加fVal と ulVal を示します。ulVal の変数は フローティング テーブルの 3 番目の条件) を入力するに変換されます。加算した結果は 倍精度浮動小数点型 (番目のテーブルの条件) を入力するに変換されdVal に割り当てられます。

参照

関連項目

標準変換