¿Que es *char? Querras decir char*.
No es lo mismo medio metro de encaje negro a que un negro te en... bueno.
Para "convertir" un tipo de dato (int, char, long int, etc) a otro, utilizas el concepto de
casting:
El casting o simplemente cast nos permite hacer una conversión explícita de un tipo de dato a otro, a criterio del programador siempre y cuando estos tipos sean compatibles.
https://programacionnerd.blogspot.com/2012/05/c-conversiones-de-tipo-casting-en-c.htmlPuse convertir entre comillas porque
convertir, lo que se dice
convertir, no puedes. Son tipos de datos diferentes. Lo que si puedes hacer (y de eso se trata el
casting), es decirle al compilador (decirle "al lenguaje") que trate un objeto (algo) de un tipo de dato determinado, como si fuera otro tipo de dato.
Para convertir un objeto de tipo B en un objeto del tipo A:
objeto_de_tipo_A = (tipo_de_dato_del_objeto_A) objeto_de_tipo_B;
Un ejemplo:
#include <stdio.h>
int main(void)
{
int var_int;
char var_char;
var_int=123;
var_char=(char)var_int;
printf("%d \n", (int) var_char
);
return 0;
}
Salida:
123
Son tipos de datos diferentes. Lo que si puedes hacer (y de eso se trata el casting), es decirle al compilador (decirle "al lenguaje") que trate un objeto (algo) de un tipo de dato determinado, como si fuera otro tipo de dato.
Esto que dije antes es importante. Porque el almacenamiento de un tipo no es el mismo que el de otro. En el caso de hacer casting a un almacenamiento, otro tipo de almacenamiento, obtendras un carry overflow:
The carry flag is a bit that is set when an arithmetic operation results in a carry out of the most significant bit. In binary multiplication, the carry flag is set when the result of the multiplication is too large to fit in the destination register.
https://allthedifferences.com/carry-flag-vs-overflow-flag/#:~:text=A%20carry%20occurs%20when%20the,overflow%20occurs%20in%20binary%20multiplication.Basicamente ocurre cuando el resultado de cualquier no cabe, equisde
Ejemplo:
#include <stdio.h>
int main(void)
{
int var_int;
char var_char;
var_int=1234;
var_char=(char)var_int;
printf("%d \n", (int) var_char
);
return 0;
}
Salida:
-46
El maximo de almacenamiento para un valor char es 255 (si no tiene signo).
Saludotes.