tipos tipo sirve rango que para long datos dato c++ c sizeof

c++ - tipo - unsigned char c



¿Cuál debería ser el tamaño de(int) en una máquina de 64 bits? (4)

Posible duplicado:
tamaño de int, largo, etc.
¿El tamaño de un int depende del compilador y / o procesador?
¿Qué decide el tamaño de un número entero?

Estoy usando una máquina de 64-bit .

$ uname -m x86_64 $ file /usr/bin/file /usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped $

Cuando ejecuté el siguiente programa, obtuve el sizeof(int) como 4-bytes .

#include <stdio.h> int main(void) { printf("sizeof(int) = %d bytes/n", (int) sizeof(int)); return 0; }

Si estoy ejecutando una máquina de 16- , 32- y 64- bits, ¿no significa que el tamaño de un integer es de 16- , 32- y 64- bits, respectivamente?

En mi máquina, encontré que WORD_BIT es 32 . ¿No debería ser 64 en una máquina de 64-bit ?

$ getconf WORD_BIT 32 $

Y, ¿no debería el sizeof(int) ser de 64-bits ( 8 bytes ) en el caso anterior?


El tamaño de un puntero debe ser de 8 bytes en cualquier compilador C / C ++ de 64 bits, pero no necesariamente el tamaño de int.


En C ++, el tamaño de int no se especifica explícitamente. Simplemente te dice que debe ser al menos del tamaño de short int , que debe ser al menos tan grande como signed char . El tamaño de char en bits tampoco se especifica explícitamente, aunque sizeof (char) se define como 1. Si quieres un int de 64 bits, C ++ 11 especifica long long para que sea al menos de 64 bits.


No tiene que ser así; La "máquina de 64 bits" puede significar muchas cosas, pero normalmente significa que la CPU tiene registros tan grandes. El tamaño de un tipo lo determina el compilador, que no tiene que tener nada que ver con el hardware real (aunque normalmente lo hace); de hecho, diferentes compiladores en la misma máquina pueden tener diferentes valores para estos.


Realmente no. para compatibilidad con versiones anteriores es de 32 bits.
Si quieres 64 bits, tienes long , size_t o int64_t