Ver Mensaje Individual
  #17 (permalink)  
Antiguo 12/04/2006, 20:46
MaxExtreme
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 1 mes
Puntos: 17
Cita:
Iniciado por TolaWare
mm, es posible que si el codigo se compila para una arquitectura de 64 bits, esto cambie.
No debería, puesto que tratamos con 1 byte, y 1 byte sigue siendo 1 byte en procesadores de 8, 16, 32 o 64 bits.

Lo que sí cambia es el entero por defecto.

En sistemas 16 bits:
"int" son 16 bits, un ax por ejemplo.
"char" son 8 bits, un ah por ejemplo.

En sistemas 32 bits:
"int" son 32 bits, un eax por ejemplo.
"long int" es equivalente a "int", 32 bits también, un ebx, por ejemplo.
"short int" son 16 bits, un ax, por ejemplo.
"char" 8 bits un ah, por ejemplo.

En sistemas 64 bits (si Eternal Idol no me corrige :D)
"int" son 32 bits, como en el anterior, un eax, por ejemplo.
"long int" son 64 bits, un rax, por ejemplo.
"short int" son 16 bits, un ax, por ejemplo.
"char" son 8 bits, un ah, por ejemplo.

Aunque no sé si en Intel64 o AMD64 se puede acceder tal cual al eax, ax y ah como en los de 32 bits.

Pero en realidad no depende del sistema, sino del compilador. Por eso muchas veces lo mejor es trabajar con tipos específicos, con la siguiente nomenglatura. Simplemente unos typedefs o #defines harán el trabajo.

signed: int8, int16, int32, int64
unsigned: uint8, uint16, uint32, uint64

o en el caso de Windows: BYTE, WORD, DWORD, QWORD