Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Fundição de tipo em C:conversão de tipo, implícito, explícito com exemplo

O que é Typecasting em C?


Typecasting é converter um tipo de dado em outro. Também é chamado de conversão de dados ou conversão de tipo na linguagem C. É um dos conceitos importantes introduzidos na programação 'C'.

A programação 'C' fornece dois tipos de operações de conversão de tipo:
  1. Conversão de tipo implícita
  2. Conversão de tipo explícito

Conversão implícita de tipo


A conversão implícita de tipos significa a conversão de tipos de dados sem perder seu significado original. Esse tipo de conversão é essencial quando você deseja alterar os tipos de dados sem alterando a significância dos valores armazenados dentro da variável.

A conversão implícita de tipo em C ocorre automaticamente quando um valor é copiado para seu tipo de dados compatível. Durante a conversão, são aplicadas regras estritas para conversão de tipo. Se os operandos forem de dois tipos de dados diferentes, um operando com tipo de dados inferior será automaticamente convertido em um tipo de dados superior. Esse tipo de conversão de tipo pode ser visto no exemplo a seguir.
#include<stdio.h>
int main(){
	short a=10; //initializing variable of short data type
	int b; //declaring int variable
	b=a; //implicit type casting
	printf("%d\n",a);
	printf("%d\n",b);
}

Saída:
10
10


  1. No exemplo dado, declaramos uma variável do tipo de dados curto com valor inicializado como 10.
  2. Na segunda linha, declaramos uma variável do tipo de dados int.
  3. Na terceira linha, atribuímos o valor da variável s à variável a. Na terceira linha, a conversão de tipo implícito é realizada quando o valor da variável s, que é do tipo de dados curto, é copiado para a variável a, que é do tipo de dados int.

Convertendo Caractere para Int


Considere o exemplo de adicionar um caractere decodificado em ASCII com um inteiro:
#include <stdio.h>
main() {
   int  number = 1;
   char character = 'k'; /*ASCII value is 107 */
   int sum;
   sum = number + character;
   printf("Value of sum : %d\n", sum );
}

Saída:
 Value of sum : 108

Aqui, o compilador fez uma promoção inteira convertendo o valor de 'k' para ASCII antes de realizar a operação de adição real.

Hierarquia de conversão aritmética


O compilador primeiro prossegue promovendo um caractere para um inteiro. Se os operandos ainda tiverem tipos de dados diferentes, eles serão convertidos no tipo de dados mais alto que aparece no gráfico de hierarquia a seguir:




Hierarquia de conversão aritmética



Considere o seguinte exemplo para entender o conceito:
#include <stdio.h>
main() {
   int  num = 13;
   char c = 'k'; /* ASCII value is 107 */
   float sum;
   sum = num + c;
   printf("sum = %f\n", sum );}

Saída:
 sum = 120.000000

Em primeiro lugar, a variável c é convertida em inteiro, mas o compilador converte num e c em "float" e os adiciona para produzir um resultado "float".

Pontos importantes sobre conversões implícitas

  • O tipo implícito de conversão de tipo também é chamado de conversão de tipo padrão. Não exigimos nenhuma palavra-chave ou instruções especiais na conversão de tipo implícita.
  • A conversão de tipos de dados menores em tipos de dados maiores também é chamada de promoção de tipos . No exemplo acima, também podemos dizer que o valor de s é promovido para o tipo integer.
  • A conversão de tipo implícito sempre acontece com os tipos de dados compatíveis.

Não podemos realizar conversão implícita de tipo nos tipos de dados que não são compatíveis entre si, como:
  1. A conversão de float para um int truncará a parte da fração, perdendo o significado do valor.
  2. A conversão de double para float arredondará os dígitos.
  3. A conversão de long int em int causará a perda de excesso de bits de alta ordem.

Em todos os casos acima, ao convertermos os tipos de dados, o valor perderá seu significado. Geralmente, a perda de significado do valor é avisada pelo compilador.

A programação 'C' fornece outra maneira de conversão de tipos que é a conversão explícita de tipos.

Conversão de tipo explícito


Na conversão de tipo implícito, o tipo de dados é convertido automaticamente. Existem alguns cenários em que podemos ter que forçar a conversão de tipo. Suponha que tenhamos uma variável div que armazena a divisão de dois operandos que são declarados como um tipo de dado int.
 int result, var1=10, var2=3;
result=var1/var2;

Neste caso, após a divisão realizada nas variáveis ​​var1 e var2 o resultado armazenado na variável “resultado” ficará em formato inteiro. Sempre que isso acontece, o valor armazenado na variável “resultado” perde o sentido, pois não considera a parte fracionária que normalmente é obtida na divisão de dois números.

Para forçar a conversão de tipo em tais situações, usamos a conversão de tipo explícita.

Requer um operador de conversão de tipo. A sintaxe geral para operações de conversão de tipo é a seguinte:
(type-name) expression

Aqui,
  • O nome do tipo é o tipo de dados padrão da linguagem 'C'.
  • Uma expressão pode ser uma constante, uma variável ou uma expressão real.

Vamos escrever um programa para demonstrar como fazer conversão de tipos em C com conversão explícita de tipos.
#include<stdio.h>
int main()
{
	float a = 1.2;
	//int b  = a; //Compiler will throw an error for this
	int b = (int)a + 1;
	printf("Value of a is %f\n", a);
	printf("Value of b is %d\n",b);
	return 0;
}

Saída:
Value of a is 1.200000
Value of b is 2


  1. Iniciamos uma variável 'a' do tipo float.
  2. Em seguida, temos outra variável 'b' do tipo de dados inteiro. Como as variáveis ​​'a' e 'b' são de tipos de dados diferentes, 'C' não permitirá o uso de tal expressão e gerará um erro. Em algumas versões de 'C', a expressão será avaliada, mas o resultado não será desejado.
  3. Para evitar tais situações, fizemos um typecast da variável ‘a’ do tipo float. Usando métodos de conversão de tipo explícitos, convertemos float em tipo de dados integer.
  4. Imprimimos o valor de 'a' que ainda é um float
  5. Após o typecast, o resultado será sempre um número inteiro 'b.'

Dessa forma, podemos implementar a conversão explícita de tipos na programação C.

Resumo

  • Typecasting também é chamado de conversão de tipo
  • Significa converter um tipo de dados em outro.
  • A conversão de tipos de dados menores em maiores também é chamada de promoção de tipo.
  • Existem dois tipos de conversão de tipo:conversão de tipo implícita e explícita em C.
  • A conversão implícita de tipo opera automaticamente quando o tipo de dados compatível é encontrado.
  • A conversão de tipo explícita requer um operador de conversão de tipo.

Tenha em mente as seguintes regras para prática de programação ao lidar com diferentes tipos de dados para evitar perda de dados:
  • Os tipos inteiros devem ser convertidos em float.
  • Os tipos float devem ser convertidos em double.
  • Os tipos de caracteres devem ser convertidos em números inteiros.

Linguagem C

  1. Conversão de tipo C#
  2. Conversão de tipo Python e conversão de tipo
  3. Cast de tipo Java
  4. O que eu faço com os dados ?!
  5. Instrução C++ Switch Case com EXEMPLO
  6. Tipo de dados C++ Char com exemplos
  7. Estrutura C++ com exemplo
  8. std::list em C++ com exemplo
  9. C# - Tipos de dados
  10. C# - Conversão de tipo