[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