Conversão de tipo C ++

Neste tutorial, aprenderemos sobre os fundamentos da conversão de tipo C ++ com a ajuda de exemplos.

C ++ nos permite converter dados de um tipo em outro. Isso é conhecido como conversão de tipo.

Existem dois tipos de conversão de tipo em C ++.

  1. Conversão implícita
  2. Conversão explícita (também conhecida como fundição de tipo)

Conversão de tipo implícita

A conversão de tipo feita automaticamente pelo compilador é conhecida como conversão de tipo implícita. Esse tipo de conversão também é conhecido como conversão automática.

Vejamos dois exemplos de conversão implícita de tipo.

Exemplo 1: conversão de int para duplo

 // Working of implicit type-conversion #include using namespace std; int main() ( // assigning an int value to num_int int num_int = 9; // declaring a double type variable double num_double; // implicit conversion // assigning int value to a double variable num_double = num_int; cout << "num_int = " << num_int << endl; cout << "num_double = " << num_double << endl; return 0; )

Resultado

 num_int = 9 num_double = 9

No programa, atribuímos um intdado a uma doublevariável.

 num_double = num_int;

Aqui, o intvalor é convertido automaticamente doublepelo compilador antes de ser atribuído à variável num_double. Este é um exemplo de conversão de tipo implícita.

Exemplo 2: conversão automática de double para int

 //Working of Implicit type-conversion #include using namespace std; int main() ( int num_int; double num_double = 9.99; // implicit conversion // assigning a double value to an int variable num_int = num_double; cout << "num_int = " << num_int << endl; cout << "num_double = " << num_double << endl; return 0; )

Resultado

 num_int = 9 num_double = 9,99

No programa, atribuímos um doubledado a uma intvariável.

 num_double = num_int;

Aqui, o doublevalor é convertido automaticamente intpelo compilador antes de ser atribuído à variável num_int. Este também é um exemplo de conversão de tipo implícita.

Observação: como intnão pode ter uma parte decimal, os dígitos após a vírgula são truncados no exemplo acima.

Perda de dados durante a conversão (restringindo a conversão)

Como vimos no exemplo acima, a conversão de um tipo de dados para outro está sujeita à perda de dados. Isso acontece quando dados de um tipo maior são convertidos em dados de um tipo menor.

Possível perda de dados durante a conversão de tipo

Conversão explícita de C ++

Quando o usuário altera manualmente os dados de um tipo para outro, isso é conhecido como conversão explícita . Esse tipo de conversão também é conhecido como fundição de tipo .

Existem três maneiras principais pelas quais podemos usar a conversão explícita em C ++. Eles são:

  1. Fundição do tipo C (também conhecido como notação de elenco )
  2. Notação de função (também conhecida como conversão de tipo de estilo C ++ antigo )
  3. Operadores de conversão de tipo

Fundição Tipo C

Como o nome sugere, este tipo de fundição é favorecida pela linguagem de programação C . Também é conhecido como notação de elenco .

A sintaxe para este estilo é:

 (data_type)expression;

Por exemplo,

 // initializing int variable int num_int = 26; // declaring double variable double num_double; // converting from int to double num_double = (double)num_int;

Fundição de estilo funcional

Também podemos usar a função como notação para converter dados de um tipo para outro.

A sintaxe para este estilo é:

 data_type(expression);

Por exemplo,

 // initializing int variable int num_int = 26; // declaring double variable double num_double; // converting from int to double num_double = double(num_int);

Exemplo 3: Tipo de Fundição

 #include using namespace std; int main() ( // initializing a double variable double num_double = 3.56; cout << "num_double = " << num_double << endl; // C-style conversion from double to int int num_int1 = (int)num_double; cout << "num_int1 = " << num_int1 << endl; // function-style conversion from double to int int num_int2 = int(num_double); cout << "num_int2 = " << num_int2 << endl; return 0; )

Resultado

 num_double = 3,56 num_int1 = 3 num_int2 = 3

Usamos a conversão de tipo de estilo C e a conversão de estilo de função para conversão de tipo e exibimos os resultados. Como eles realizam a mesma tarefa, ambos fornecem a mesma saída.

Operadores de conversão de tipo

Além desses dois tipos de fundição, C ++ também tem quatro operadores para conversão de tipo. Eles são conhecidos como operadores de conversão de tipo . Eles são:

  • static_cast
  • dynamic_cast
  • const_cast
  • reinterpret_cast

Aprenderemos sobre esses elencos em tutoriais posteriores.

Tutoriais recomendados:

  • String C ++ para int e vice-versa
  • Cadeia de caracteres C ++ para flutuar, dupla e vice-versa

Artigos interessantes...