variable sirve que para long float definicion data c int

sirve - ¿Es int en C siempre 32 bits?



short c++ para que sirve (8)

Esto está relacionado con la siguiente pregunta,

Cómo declarar un entero de 32 bits en C

Varias personas mencionadas int son siempre de 32 bits en la mayoría de las plataformas. Tengo curiosidad si esto es cierto.

¿Conoces alguna plataforma moderna con int de diferente tamaño? Ignore las plataformas de dinosaurios con arquitecturas de 8 o 16 bits.

NOTA: Ya sé cómo declarar un entero de 32 bits de la otra pregunta. Esta es más como una encuesta para averiguar qué plataformas (CPU / OS / Compilador) admiten enteros con otros tamaños.


" siempre es de 32 bits en la mayoría de las plataformas": ¿qué tiene de malo ese fragmento de código? :-)

El estándar C no exige los tamaños de muchos de sus tipos integrales. Hace cumplir los tamaños relativos, por ejemplo, sizeof(int) >= sizeof(short) y así sucesivamente. También exige rangos mínimos, pero permite múltiples esquemas de codificación (complemento a dos, complemento a uno y signo / magnitud).

Si desea una variable de tamaño específico, necesita usar una adecuada para la plataforma en la que se está ejecutando, como el uso de #ifdef ''s, algo como:

#ifdef LONG_IS_32BITS typedef long int32; #else #ifdef INT_IS_32BITS typedef int int32; #else #error No 32-bit data type available #endif #endif

Alternativamente, C99 y superior permiten para los tipos enteros de ancho exacto intN_t y uintN_t :

  1. El nombre typedef intN_t designa un tipo entero con signo con ancho N , sin bits de relleno y una representación de complemento a dos. Por lo tanto, int8_t denota un tipo entero con signo con un ancho de exactamente 8 bits.
  2. El nombre typedef uintN_t designa un tipo entero sin signo con ancho N Por lo tanto, uint24_t denota un tipo entero sin signo con un ancho de exactamente 24 bits.
  3. Estos tipos son opcionales. Sin embargo, si una implementación proporciona tipos de enteros con anchos de 8, 16, 32 o 64 bits, sin bits de relleno y (para los tipos con signo) que tienen una representación de complemento a dos, se definirán los nombres de typedef correspondientes.

Bueno, la mayoría de los procesadores basados ​​en ARM pueden ejecutar el código Thumb, que es un modo de 16 bits. Eso incluye los portátiles Android, que hasta ahora sólo se rumorea, y los teléfonos inteligentes de última generación.

Además, algunas calculadoras gráficas usan procesadores de 8 bits, y también las llamaría bastante modernas.


Como varias personas han indicado, no hay garantías de que un ''int'' sea de 32 bits, si desea usar variables de un tamaño específico, especialmente cuando se escribe código que involucra manipulaciones de bits, debe usar el "Tipo de entero estándar" obligatorio por la especificación c99.

int8_t uint8_t int32_t uint32_t

etc ...

generalmente tienen la forma [u] intN_t, donde la ''u'' especifica que desea una cantidad sin firmar, y N es el número de bits

Los typedefs correctos para estos deberían estar disponibles en stdint.h en cualquier plataforma para la que esté compilando, usarlos le permite escribir código agradable y portátil :-)


Depende enormemente de su compilador. Algunos los compilan como de 64 bits en máquinas de 64 bits, otros los compilan como de 32 bits. Los sistemas embebidos son su propia bola de cera especial.

Lo mejor que puedes hacer para comprobar:

printf("%d/n", sizeof(int));

Tenga en cuenta que sizeof imprimirá bytes. Haz sizeof(int)*CHAR_BIT para obtener bits.

Código para imprimir el número de bits para varios tipos:

#include <limits.h> #include <stdio.h> int main(void) { printf("short is %d bits/n", CHAR_BIT * sizeof( short ) ); printf("int is %d bits/n", CHAR_BIT * sizeof( int ) ); printf("long is %d bits/n", CHAR_BIT * sizeof( long ) ); printf("long long is %d bits/n", CHAR_BIT * sizeof(long long) ); return 0; }


En este momento, la mayoría de las plataformas de escritorio y servidor utilizan enteros de 32 bits, e incluso muchas plataformas integradas (piense en la ARM portátil o x86) usan int 32 bits. Para llegar a un int 16 bits tienes que ser muy pequeño: piensa en "Berkeley mote" o en algunos de los chips Atmel Atmega más pequeños. Pero ellos están ahí fuera.


No. Los sistemas embebidos pequeños usan enteros de 16 bits.


Si también está interesado en el valor máximo / mínimo real en lugar del número de bits, limits.h contiene prácticamente todo lo que desea saber.


TI todavía está vendiendo tableros OMAP con los DSP C55x en ellos, principalmente utilizados para la decodificación de video. Creo que el compilador suministrado para esto tiene un int de 16 bits. Apenas es un dinosaurio (el Nokia 770 se lanzó en 2005), aunque se pueden obtener DSP de 32 bits.

La mayoría del código que escribe, puede asumir con seguridad que nunca se ejecutará en un DSP. Pero tal vez no todos.