強制型変換の優先順位に関する質問

#include<iostream>
using namespace std;
int main(){
    
    

    int a = 5;
    int b = 8;
    cout << (float)(a+b)/2 << endl; // output:6.5
    cout << float((a+b)/2) << endl; // output:6
    float c = 3.5;
    float d = 10;
    cout << (int)c / d <<endl; //output:0.3
    cout << int(c / d) <<endl; //output:0
    
}

1. 変数間の型変換は実行時に自然に発生します。一般に、短い語長は長い語長に変換されます。
なぜ一般的だと言えるのですか?
同じ語長で変換する場合もあります
(1) 正しい表現、つまりデータの上位ビットを優先します。一般に、型変換には語長が伴いますが、short(2B)->int(4B)、int(4B)->double(8B) などの拡張機能を使えば十分に要件を満たすことができます。上位ビットが失われていない (正しい) こと、および精度が失われていない (エラーがない) こと。
(2) 同じ語長の変換の場合 (int->float など)、長さが 4B の場合、24 ビットを超える浮動小数点数を格納するために 754 標準を使用する言語精度が落ちる(下位ビットが失われる)ことになりますが、表現範囲が大きい(指数に8ビットを充当する)ため、オーバーフローしないように精度を落とすリスクを承知でfloatに変換します。
double や拡張 double など、より長い語長の浮動小数点データに変換します。
2. 強制的な型変換の場合、通常は括弧の優先順位の原則に従います 。つまり、
括弧は配置されます。変換の種類については、乗算や除算より優先順位が高く、式に括弧が置かれている場合は優先順位が最も低くなります。

おすすめ

転載: blog.csdn.net/weixin_44343355/article/details/133974330