算術変換
多くの二項演算子によって(二項演算子を含む式 で説明します) オペランドおよび yield 同じ方法で変換が発生します。にはこれらの演算子での変換は「通常の算術変換」と呼ばれます。異なるネイティブ型のオペランドの算術変換は次のように実行します。型定義の型は基になるネイティブ型に従って動作します。
型変換の条件
満たされる条件 |
変換 |
---|---|
いずれかのオペランドは型 long 倍精度浮動小数点型 です。 |
他のオペランドは long 倍精度浮動小数点型 を入力するに変換されます。 |
前の条件を満たさないいずれかのオペランドは型 倍精度浮動小数点型 です。 |
他のオペランドは 倍精度浮動小数点型 を入力するに変換されます。 |
前の条件を満たさないいずれかのオペランドは型 フローティング です。 |
他のオペランドは フローティング を入力するに変換されます。 |
満たさない最初の条件 (オペランドがフローティングの型ではありません)。 |
の整数の上位変換はオペランドに次のように行われます :
|
次のコードは表に示す変換規則を示しています :
// 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 に割り当てられます。