Diferencia entre revisiones de «Casting»
Ir a la navegación
Ir a la búsqueda
| (No se muestran 6 ediciones intermedias del mismo usuario) | |||
| Línea 1: | Línea 1: | ||
= Que es? = | = Que es? = | ||
*El casting es la conversión de una variable de un tipo a otro tipo | *El casting es la conversión de una variable de un tipo a otro tipo | ||
( <tipo_de_dato> ) <expresión> | ( <tipo_de_dato> ) <expresión> | ||
= Casting de Variables = | = Casting de Variables = | ||
| Línea 13: | Línea 12: | ||
r = (float) a/b; | r = (float) a/b; | ||
</pre> | </pre> | ||
*Si queremos hacer una division de dos numeros enteros pero queremos el resultado en numero real, hacemos un casting de la operacion. En el ejmplo anterior r = 1,66666. Si no ponemos el casting r = 1 | *Si queremos hacer una division de dos numeros enteros pero queremos el resultado en numero real, hacemos un casting de la operacion. En el ejmplo anterior ''r = 1,66666''. Si no ponemos el casting ''r = 1'' | ||
*''r'' es del tipo float y queremos que la division entre ''a'' y ''b'' sea del mismo tipo que r, por tanto cambiamos el tipo a float | |||
= Casting de Punteros = | = Casting de Punteros = | ||
*El casting de punteros se hace | *El casting de punteros se hace a los [[Punteros#Punteros Genéricos|punteros genéricos]], aunque también se le puede cambiar el tipo a un puntero int, por ejemplo. | ||
*Su sintaxis es: | *Su sintaxis es: | ||
(<tipo> *)<variable puntero> | (<tipo> *)<variable puntero> | ||
== Ejemplo == | == Ejemplo == | ||
<pre> | <pre> | ||
| Línea 28: | Línea 29: | ||
void *p; | void *p; | ||
p = &a; | p = &a; //Aqui deberia poner p = (void *)&a para ser puristas | ||
printf("%d\n",*(int*)p); | printf("%d\n",*(int*)p); | ||
| Línea 39: | Línea 40: | ||
int g; | int g; | ||
p = &a; | p = &a; | ||
g = *(int*)p; | g = *(int*)p; //Como g es un puntero a int, tiene que recibir un puntero a int, por eso hago el casting al puntero neutro p | ||
printf("%d\n",g); | printf("%d\n",g); | ||
</pre> | </pre> | ||
*Si no se hiciera el casting tendríamos un error en el compilador | *Si no se hiciera el casting tendríamos un error en el compilador | ||
Revisión actual - 15:10 21 mar 2013
Que es?
[editar]- El casting es la conversión de una variable de un tipo a otro tipo
( <tipo_de_dato> ) <expresión>
Casting de Variables
[editar]Ejemplo:
int a = 5; int b = 3; float r; r = (float) a/b;
- Si queremos hacer una division de dos numeros enteros pero queremos el resultado en numero real, hacemos un casting de la operacion. En el ejmplo anterior r = 1,66666. Si no ponemos el casting r = 1
- r es del tipo float y queremos que la division entre a y b sea del mismo tipo que r, por tanto cambiamos el tipo a float
Casting de Punteros
[editar]- El casting de punteros se hace a los punteros genéricos, aunque también se le puede cambiar el tipo a un puntero int, por ejemplo.
- Su sintaxis es:
(<tipo> *)<variable puntero>
Ejemplo
[editar]int a = 5;
float b = 3.2;
char c = 'a';
void *p;
p = &a; //Aqui deberia poner p = (void *)&a para ser puristas
printf("%d\n",*(int*)p);
p = &b;
printf("%f\n",*(float *)p);
p = &c;
printf("%c\n",*(char *)p);
int g;
p = &a;
g = *(int*)p; //Como g es un puntero a int, tiene que recibir un puntero a int, por eso hago el casting al puntero neutro p
printf("%d\n",g);
- Si no se hiciera el casting tendríamos un error en el compilador