Conversión de tipos en C: conversión de tipos, implícita, explícita con ejemplo

¿Qué es el encasillamiento en C?

El encasillamiento consiste en convertir un tipo de datos en otro. También se le llama conversión de datos o conversión de tipos en lenguaje C. Es uno de los importantes concepts introducido en la programación 'C'.

La programación 'C' proporciona dos tipos de conversión de tipos operafunciones:

  1. Conversión de tipos implícitos
  2. Conversión de tipo explícito

Conversión de tipos implícitos

La conversión de tipos implícita significa la conversión de tipos de datos sin perder su significado original. Este tipo de encasillamiento es esencial cuando se desea cambiar tipos de datos. sin cambiar el significado de los valores almacenados dentro del variable.

La conversión de tipo implícita en C ocurre automáticamente cuando un valor se copia a su tipo de datos compatible. Durante la conversión, se aplican reglas estrictas para la conversión de tipos. Si el operands son de dos tipos de datos diferentes, entonces un operay tener un tipo de datos más bajo se convierte automáticamente en un tipo de datos más alto. Este tipo de conversión de tipo se puede ver a continuación.wing ejemplo.

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

Salida:

10
10

Conversión de tipos implícitos

  1. En el ejemplo dado, hemos declarado una variable de tipo de datos corto con un valor inicializado como 10.
  2. En la segunda línea, hemos declarado una variable de tipo de datos int.
  3. En la tercera línea, hemos asignado el valor de la variable s a la variable a. En la tercera línea, la conversión de tipo implícita se realiza cuando el valor de la variable s, que es de tipo de datos corto, se copia en la variable a, que es de tipo de datos int.

Convertir carácter a int

Considere el ejemplo de agregar un carácter decodificado en ASCII con un número entero:

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

Salida:

 Value of sum : 108

Aquí, el compilador ha hecho un número entero. promoción convirtiendo el valor de 'k' a ASCII antes de realizar la suma real operación.

Jerarquía de conversión aritmética

El compilador primero procede con promoconvertir un carácter a un número entero. Si el operaLos nds todavía tienen diferentes tipos de datos, luego se convierten al tipo de datos más alto que aparece a continuación.wing gráfico de jerarquía:

Conversión de tipos implícitos
Jerarquía de conversión aritmética

Considere lo siguientewing ejemplo para entender el concepto:

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

Salida:

 sum = 120.000000

En primer lugar, la variable c se convierte a un número entero, pero el compilador convierte número y c en "flotante" y los agrega para producir un resultado "flotante".

Puntos importantes sobre las conversiones implícitas

  • El tipo implícito de conversión de tipos también se denomina conversión de tipos estándar. No requerimos ninguna palabra clave ni declaraciones especiales en la conversión de tipos implícita.
  • La conversión de un tipo de datos más pequeño a un tipo de datos más grande también se denomina tipo promodesarrollo. En el ejemplo anterior, también podemos decir que el valor de s es promoted para escribir un número entero.
  • La conversión de tipo implícita siempre ocurre con los tipos de datos compatibles.

No podemos realizar una conversión de tipos implícita en tipos de datos que no son compatibles entre sí, como por ejemplo:

  1. La conversión de float a int truncará la parte fraccionaria y, por lo tanto, perderá el significado del valor.
  2. Conversión double flotar redondeará los dígitos.
  3. La conversión de long int a int provocará la eliminación del exceso de bits de orden superior.

En todos los casos anteriores, cuando convertimos los tipos de datos, el valor perderá su significado. Generalmente, el compilador advierte de la pérdida de significado del valor.

Programación 'C' proporciona otra forma de encasillamiento que es la conversión de tipos explícita.

Conversión de tipo explícito

En la conversión de tipos implícita, el tipo de datos se convierte automáticamente. Hay algunos escenarios en los que es posible que tengamos que forzar la conversión de tipos. Supongamos que tenemos una variable div que almacena la división de dos operands que se declaran como un tipo de datos int.

 int result, var1=10, var2=3;
result=var1/var2;

En este caso, después de la división realizada en las variables var1 y var2 el resultado almacenado en la variable “resultado” estará en formato entero. Cuando esto sucede, el valor almacenado en la variable “resultado” pierde su significado porque no considera la parte fraccionaria que normalmente se obtiene en la división de dos. numbers.

Para forzar la conversión de tipos en tales situaciones, utilizamos la conversión de tipos explícita.

Requiere un casting tipo operacolina. La sintaxis general para la conversión de tipos. operaciones es la siguiente:

(type-name) expression

Aquí,

  • El nombre del tipo es el tipo de datos estándar del lenguaje "C".
  • Una expresión puede ser una constante, una variable o una expresión real.

Escribamos un programa para demostrar cómo encasillar en C con encasillamiento explícito.

#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;
}

Salida:

Value of a is 1.200000
Value of b is 2

Conversión de tipo explícito

  1. Hemos inicializado una variable 'a' de tipo float.
  2. A continuación, tenemos otra variable 'b' de tipo de datos entero. Dado que las variables 'a' y 'b' son de diferentes tipos de datos, 'C' no permitirá el uso de dicha expresión y generará un error. En algunas versiones de 'C', la expresión se evaluará pero el resultado no será el deseado.
  3. Para evitar este tipo de situaciones, hemos encasillado la variable 'a' de tipo float. Al utilizar métodos de conversión de tipos explícitos, hemos convertido con éxito float en un tipo de datos entero.
  4. Hemos impreso el valor de 'a' que todavía es flotante
  5. Después del encasillamiento, el resultado siempre será un número entero "b".

De esta manera, podemos implementar la conversión de tipos explícita en la programación C.

Resumen

  • El encasillamiento también se denomina conversión de tipos.
  • Significa convertir un tipo de datos en otro.
  • La conversión de un tipo de datos más pequeño en uno más grande también se denomina tipo promoción.
  • Hay dos tipos de conversión de tipos: conversión de tipos implícita y explícita en C.
  • Conversión de tipos implícita operaprueba automáticamente cuando se encuentra el tipo de datos compatible.
  • La conversión de tipos explícita requiere una conversión de tipos operacolina.

Tenga en cuenta lo siguientewing Reglas para la práctica de programación cuando se trata de diferentes tipos de datos para evitar la pérdida de datos:

  • Los tipos de números enteros deben convertirse a flotantes.
  • Los tipos flotantes deben convertirse a double.
  • Los tipos de caracteres deben convertirse a números enteros.