ExpertiDict

C++ · Intermediário · Inglês · Técnico

narrowing conversion

ˈnɛɹ.oʊ.ɪŋ kənˈvɝː.ʒənsubstantivo

Conversão implícita que pode perder valor ou precisão, como double para int ou um int grande para char. Com inicialização por chaves, o compilador a trata como erro.

Onde usar

Surge ao trocar parênteses por chaves em construtores e ao inicializar contêineres. É uma proteção: int x{3.5} não compila, enquanto int x = 3.5 apenas trunca.

Em código

double d = 3.7;
int a = d;        // trunca para 3, compila
// int b{d};      // erro: estreitamento
int c{static_cast<int>(d)};  // explícito
char k{65};       // ok: constante cabe

Exemplos

The braces turned that silent truncation into an error.

As chaves transformaram esse truncamento silencioso em erro.

Use static cast if the narrowing conversion is intentional.

Use static cast se a conversão estreita for intencional.

Cuidado

Com parênteses ou sinal de igual a conversão estreita compila, talvez com warning; só a inicialização por chaves a proíbe, exceto para constantes que cabem no tipo.

Sinônimos

conversão com perda

Veja também

Todos os termos de C++