[C con Clase] Castings char, unsigned char, int y unsigned int

Sebastian Oldani sebastianoldani en gmail.com
Dom Jun 29 16:51:20 CEST 2014


Bueno, eso es un problema de interpretación, cuando declaras una 
variable como char, lo que estas diciendo es que vas a usar 1 Byte de 
espacio de memoria. osea 8 bits.

Hola, como va?. Lo que sucede es que let no es unsigned, entonces lo 
esta interpretando siempre como si valiera -56, cuando lo castias a 
unsigned int le va a agregar los bytes que le falten para ser un 
unsigned int y lo va a interpretar desde ese punto.

Te hago ese ejemplo en hexadecimal para que se entienda.

vos le cargas a un char el valor 200, que equivale a cargarle -56.

let = 0xc8 (es 200 en hexa)

cuando lo casteas a int, es como que let ahora vale = 0xffffffc8 si 
imprimis esto en la consola te va a decir que vale -56, sigue valiendo 
lo mismo.

pero si le decis que interprete eso valor como un valor sin signo ese 
mismo valor vale 4294967240.

Espero se entienda. Nos vemos.


El 28/06/14 22:26, Julio Cesar escribió:
> Buenas tardes a todos, ya estoy aquí de nuevo molestándolos, espero me
> puedan ayudar a entender un problema que tengo con estos castings en
> particular.
>
> La situación es, si yo tengo:
>
> int main(){
>     char let;
>     unsigned char let2:
>
>     let = (char)200;
>     let2 = (unsigned char)200;
>     cout << (int)let << endl << (unsigned int)let << endl << (int)let2
> << endl << (insigned int)let2 << endl;
>
> return 0;
> }
>
> el resultado es:
>
> -56
> 4294967240
> 200
> 200
>
> Entonces mi duda es sobre la primera y segunda impresion en
> pantalla"(int)let" y  "(unsigned int)let", en la segunda a que se debe
> que me arroje ese numero, ¿No deberia devolver 200 como en la cuarta
> impresion en pantalla?. Y en la primera, ¿Que no deberia devolver 200
> como en la tercera?, pues segun yo el "binario" de de let y let2 es el
> mismo.
>
> Gracias por la ayuda y la atención prestada, que tengan buen día y
> disculpen tantas molestias ocasionadas.
>
> Julio Cesar
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>





Más información sobre la lista de distribución Cconclase