Compartilhar via


Aviso do compilador (nível 1) C4305

'conversion': truncamento de 'type1' para 'type2'

Comentários

Esse aviso é emitido quando um valor é convertido em um tipo menor em uma inicialização ou como um argumento de construtor, resultando em uma perda de informações.

Exemplo

Este exemplo mostra duas maneiras de você ver este aviso:

// 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 corrigir esse problema, inicialize usando um valor do tipo correto ou use uma conversão explícita para o tipo correto. Por exemplo, use um literal float como 2,71828f em vez de um double (o tipo padrão para literais de ponto flutuante) para inicializar uma variável float ou passar para um construtor que usa um argumento float.