[C con Clase] Duda punteros
Steven Davidson
srd4121 en njit.edu
Lun Ene 25 21:08:26 CET 2010
Hola Tuket,
TUKET wrote:
> Gracias a todos por contestar :)
> Tienes razon como tu dices me da fallo de segmentacion haciendo un
> cast.
> Por cierto no entiendo esto de que es un cast :s ¿es una forma de
> asignar valores a punteros?
>
La palabra "cast" en inglés se refiere en este caso a un molde o como
verbo, moldear. En C/C++ un "cásting" es un cambio temporal de tipo. Por
ejemplo,
float fnum = 10.56;
int num = (int)fnum;
cout << num << endl;
Convertimos el valor de 'fnum' de 'float' a 'int' y guardamos el
resultado en 'num'. Esto es un cásting explícito, ya que el compilador
no puede tomar la decisión de cambiar el número 10,56 a un entero,
porque perdería información.
También existe el cásting implícito que se llaman "promoción". Por ejemplo,
int num = 10;
float fnum = num; // promoción
cout << num << endl;
Aquí, el compilador promocionaría el valor de 'num', 10, de tipo 'int' a
otro de tipo 'float' para poder asignárselo a 'fnum'. El cásting es
implícito porque vamos de un tipo de dato "menor" (int) a otro "mayor"
(float) sin darnos problemas de pérdida de información.
Sugiero consultar el capítulo 9 de nuestro curso de C++. Puedes
dirigirte a: http://c.conclase.net/curso/index.php?cap=009 También
puedes echar un vistazo al capítulo 42, aunque seguramente algunos
operadores de cástings no los entenderás del todo bien. El enlace es:
http://c.conclase.net/curso/index.php?cap=042
Espero que esto te aclare la duda.
Steven
Más información sobre la lista de distribución Cconclase