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.