Sdílet prostřednictvím


Upozornění kompilátoru (úroveň 1) C4305

'conversion': zkrácení z 'type1' na 'type2'

Poznámky

Toto upozornění se vydává, když je hodnota převedena na menší typ inicializace nebo jako argument konstruktoru, což vede ke ztrátě informací.

Příklad

Tato ukázka ukazuje dva způsoby, jak se může zobrazit toto upozornění:

// 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);
}

Chcete-li tento problém vyřešit, inicializovat pomocí hodnoty správného typu nebo použít explicitní přetypování na správný typ. Například k inicializaci proměnné použijte float literál 2,71828f místo double (výchozí typ pro literály s plovoucí desetinou čárkou) nebo předejte konstruktoru, který přebírá float float argument.