[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