Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Tipo Casting en C:conversión de tipo, implícito, explícito con ejemplo

¿Qué es el encasillamiento en C?

Typecasting es convertir un tipo de datos en otro. También se denomina conversión de datos o conversión de tipo en lenguaje C. Es uno de los conceptos importantes introducidos en la programación 'C'.

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

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

Conversión de tipos implícita

La conversión implícita de tipos significa la conversión de tipos de datos sin perder su significado original. Este tipo de encasillamiento es esencial cuando desea cambiar los tipos de datos sin cambiando el significado de los valores almacenados dentro de la 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 los operandos son de dos tipos de datos diferentes, un operando que tenga 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 en el siguiente 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

  1. En el ejemplo dado, hemos declarado una variable de tipo de datos cortos 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ícito se realiza a medida que 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.

Conversión de caracteres a enteros

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 realizado una promoción de enteros al convertir el valor de 'k' a ASCII antes de realizar la operación de suma real.

Jerarquía de conversión aritmética

El compilador primero procede con la promoción de un carácter a un número entero. Si los operandos todavía tienen diferentes tipos de datos, entonces se convierten al tipo de datos más alto que aparece en el siguiente gráfico de jerarquía:

Jerarquía de conversión aritmética

Considere el siguiente 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 en entero, pero el compilador convierte num y c en "flotante" y los agrega para producir un resultado "flotante".

Puntos importantes sobre las conversiones implícitas

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

  1. Convertir float en un int truncará la parte de la fracción y, por lo tanto, perderá el significado del valor.
  2. Convertir doble en flotante redondeará los dígitos.
  3. La conversión de int largo a int provocará la eliminación de exceso de bits de alto orden.

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

La programación en 'C' proporciona otra forma de encasillamiento, que es el encasillamiento explícito de tipos.

Conversión de tipo explícito

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

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

En este caso, luego de la división realizada en las variables var1 y var2, el resultado almacenado en la variable “resultado” estará en formato entero. Siempre que 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 números.

Para forzar la conversión de tipo en tales situaciones, usamos conversión de tipo explícita.

Requiere un operador de fundición de tipos. La sintaxis general para las operaciones de conversión de tipos es la siguiente:

(type-name) expression

Aquí,

Escribamos un programa para demostrar cómo encasillar en C con encasillado 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

  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', se evaluará la expresión pero no se deseará el resultado.
  3. Para evitar este tipo de situaciones, hemos encasillado la variable 'a' de tipo float. Mediante el uso de métodos explícitos de conversión de tipos, hemos convertido con éxito flotante en un tipo de datos entero.
  4. Hemos impreso el valor de 'a' que todavía es flotante
  5. Después de encasillar, el resultado siempre será un número entero 'b'.

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

Resumen

Tenga en cuenta las siguientes reglas para la práctica de programación cuando trabaje con diferentes tipos de datos para evitar la pérdida de datos:


Lenguaje C

  1. Conversión de tipo C#
  2. Conversión de tipo C++
  3. Conversión de tipos de Python y conversión de tipos
  4. Conversión de tipos de Java
  5. ¡¿Qué hago con los datos ?!
  6. Declaración de caso de cambio de C ++ con EJEMPLO
  7. Tipo de datos Char de C++ con ejemplos
  8. Estructura C++ con ejemplo
  9. std::list en C++ con ejemplo
  10. C# - Tipos de datos
  11. C# - Conversión de tipo