Condividi tramite


Avviso del compilatore (livello 1) C4305

'conversion': troncamento da 'type1' a 'type2'

Osservazioni:

Questo avviso viene generato quando un valore viene convertito in un tipo più piccolo in un'inizializzazione o come argomento del costruttore, con conseguente perdita di informazioni.

Esempio

Questo esempio illustra due modi per visualizzare questo avviso:

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

Per risolvere questo problema, inizializzare usando un valore del tipo corretto o usare un cast esplicito al tipo corretto. Ad esempio, usare un float valore letterale, ad esempio 2.71828f anziché un double (tipo predefinito per i valori letterali a virgola mobile) per inizializzare una float variabile o passare a un costruttore che accetta un float argomento.