Compartir a través de


Advertencia del compilador (nivel 1) C4305

"conversion": truncamiento de "type1" a "type2"

Comentarios

Esta advertencia se emite cuando un valor se convierte en un tipo más pequeño en una inicialización o como argumento de constructor, lo que da lugar a una pérdida de información.

Ejemplo

En este ejemplo se muestran dos maneras de ver esta advertencia:

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

Para corregir este problema, use un valor del tipo correcto para inicializar, o bien use una conversión explícita al tipo correcto. Por ejemplo, use un literal float como 2.71828f en lugar de double (el tipo predeterminado para literales de número de punto flotante) para inicializar una variable float o para pasar a un constructor que toma un argumento float.