次の方法で共有


コンパイラの警告 (レベル 1) C4305

'conversion': 'type1' から 'type2' へ切り詰めます

解説

この警告は、初期化時またはコンストラクター引数として値が小さい型に変換され、情報が失われた場合に発生します。

このサンプルは、この警告が表示される可能性のある 2 つの方法を示しています。

// C4305.cpp
// Compile by using: cl /EHsc /W4 C4305.cpp

struct item
{
    item(float) {}
};

int main()
{
    float f = 2.71828;          // C4305 'initializing'
    item i(3.14159);            // C4305 'argument'
    return static_cast<int>(f);
}

この問題を解決するには、正しい型の値を使用して初期化するか、正しい型への明示的なキャストを使用します。 たとえば、double (浮動小数点リテラルの既定の型) ではなく、2.71828f などの float リテラルを使用して、float 変数を初期化したり、float 引数を取るコンストラクターに渡したりします。