Saltar al contenido

TypeCasting en C: implícito, explícito con ejemplo

¿Qué es escribir en C?

Escribir es cambiar un tipo de datos a otro. También se denomina conversión de datos o conversión de tipos. Es uno de los conceptos importantes introducidos en la programación «C».

Los programas ‘C’ proporcionan dos tipos de operaciones de resolución de tipos:

  1. Tipo de soluciones implícitas
  2. Escriba soluciones express

Tipo de soluciones implícitas

Las soluciones implícitas significan convertir tipos de datos sin perder su esencia. Este tipo de escritura es necesario cuando desea cambiar los tipos de datos. pecado la importancia de cambiar los valores almacenados dentro de la variable.

La conversión de tipo implícita se produce automáticamente cuando un valor se copia a su tipo de coincidencia de datos. Durante la conversión, se aplican reglas estrictas sobre la conversión de tipos. Si las óperas tienen dos tipos de datos diferentes, entonces una ópera con un tipo de datos más bajo se cambia a un tipo de datos más alto. Este tipo de conversión 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("%dn",a);
	printf("%dn",b);
} 

Producción

10
10
  1. En el ejemplo separado, determinamos una variable de tipo de datos corta con un valor inicial como 10.
  2. En la segunda línea, declaramos una variable de tipo de datos int.
  3. En la tercera línea, a la variable s se le asigna el valor de las variables s. La conversión de tipo de tercera línea implícita se realiza cuando el valor de una variable s que es un tipo de datos corto se copia en la variable a de tipo de datos int.

Convertir carácter a int

Considere agregar el ejemplo de un carácter decodificado en ASCII a 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 : %dn", sum );
} 

Producción:

 Value of sum : 108

Aquí, un compilador ha ejecutado un número entero convirtiendo un valor de ‘k’ a ASCII antes de realizar la operación de complemento real.

Jerarquía de conversión aritmética

El compilador continúa avanzando un carácter a un número entero. Si las óperas todavía tienen diferentes tipos de datos, se cambian al tipo de datos más alto que se muestra en el siguiente cuadro de jerarquía:

Considere el siguiente ejemplo para comprender el concepto:


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

Producción:

 sum = 120.000000 

Inicialmente, la variable c se convierte en un entero, pero el compilador cambia num y C en un «flotador» y se agregan para producir un resultado «flotante».

Puntos clave sobre la conversión implícita

No podemos hacer soluciones implícitas a los tipos de datos incompatibles, como:

  1. La conversión de un flotante en un número entero reducirá la parte de la fracción y perderá el significado del valor.
  2. Una doble conversión servirá para asegurar la flotación de los dígitos.
  3. La conversión de un número entero largo en un número entero reducirá demasiados bits de orden superior.

En todos los casos anteriores, cuando cambiamos los tipos de datos, el valor pierde su significado. El compilador suele advertir de la pérdida de significado.

La programación ‘C’ proporciona otra forma de escribir con un tipo obvio de solución.

Escriba soluciones express

En la conversión de tipo implícita, el tipo de datos se cambia automáticamente. Hay algunos casos en los que es posible que necesitemos implementar la conversión de tipos. Supongamos que tenemos una sección variable que almacena una sección de dos óperas que se declara como un tipo de datos int.

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

En este caso, después de la separación de las variables var1 y var2, el resultado almacenado en el «resultado» será una variable en formato entero. Siempre que esto sucede, el valor almacenado en la variable “resultado” pierde su significado porque no considera la fracción fracción que normalmente se encuentra en unos dos números.

Para implementar la conversión de tipos en tales casos, usamos soluciones de tipos.

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

(type-name) expression

Seo

Escribamos un programa para ilustrar la aplicación de una especie de proyección explícita en ‘C’.


#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 %fn", a);
	printf("Value of b is %dn",b);
	return 0;
}

Producción:

Value of a is 1.200000
Value of b is 2
  1. Comenzamos con una variable de tipo flotante ‘a’.
  2. Entonces tenemos otra variable ‘b’ de tipo de datos enteros. Dado que las variables ‘a’ y ‘b’ son de diferentes tipos de datos, ‘C’ no permitirá el uso de esa expresión y aumentará el error. En algunas versiones de ‘C’, se considerará la expresión pero no se requerirá el resultado.
  3. Para evitar tales situaciones, hemos impreso la variable de tipo flotante ‘a’. Mediante el uso de métodos de resolución explícitos, convertimos un flotante en un número entero de tipo de datos.
  4. Tenemos un valor impreso ‘a’ que todavía está flotando
  5. Después de escribir, el entero ‘b’. El resultado siempre será.

De esta manera, podemos aplicar una proyección explícita en la programación ‘C’.

Resumen

Tenga en cuenta las siguientes reglas de práctica de registro al tratar con diferentes tipos de datos para evitar la pérdida de datos: