Partager via


Avertissement du compilateur (niveau 1) C4305

'context' : troncation de 'type1' à 'type2'

Notes

Cet avertissement est émis lorsqu’une valeur est convertie en type plus petit dans une initialisation ou en tant qu’argument de constructeur, ce qui entraîne une perte d’informations.

Exemple

Cet exemple montre deux façons de voir cet avertissement :

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

Pour résoudre ce problème, initialisez à l’aide d’une valeur du type correct ou utilisez un cast explicite vers le type correct. Par exemple, utilisez un float littéral tel que 2.71828f au lieu d’un double (type par défaut pour les littéraux à virgule flottante) pour initialiser une float variable ou pour passer à un constructeur qui accepte un float argument.