¿Por qué en el compilador Turbo C el tamaño de sizeof(int) es de 2 bytes y en el compilador gcc Linux es de 4 bytes?
sizeof(int) no es una constante en todas las plataformas.
Varía de un sistema a otro.
PD: Solo el objeto sizeof que es constante en todas las plataformas es sizeof(char)
sizeof(int) varía de una máquina a otra (y, a veces, de un compilador a otro).
Por lo general sizeof(int) representa el ancho de palabra "natural" de la CPU. Pero si su compilador se ejecuta como un programa x86 en una máquina x64, incluso esta suposición se rompe.
En las instrucciones de MSDOS , los códigos son 16 bit | 2 Bytes .
Entonces, los valores enteros máximos serían enteros de 16bit .
La palabra clave
intdifiere de un compilador a otro. ¡ Turbo C es un compilador16 bit, por lo que compila el código en un código de máquina de16 bitpara el procesador!Como todos sabemos, un compilador convertirá el código en un código de máquina para que funcione.
Lo mismo se aplica para GCC .
Las computadoras que usamos hoy en día son de 32/64 bits.
Un compilador debe admitir la arquitectura para que cualquier aplicación funcione.
32/64 bit . Entonces, sizeof(int) es 4 Bytes .16bit . Entonces, sizeof(int) es 2 Bytes .