"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Se garantiza que "long" tendrá al menos 32 bits en C++?

¿Se garantiza que "long" tendrá al menos 32 bits en C++?

Publicado el 2024-11-07
Navegar:391

Is `long` Guaranteed to Have at Least 32 Bits in C  ?

¿Se garantiza que long tendrá 32 bits?

A pesar de las suposiciones comunes basadas en el estándar C, surge la pregunta de si se garantiza que long tendrá al menos 32 bits. El Estándar clasifica los tipos integrales fundamentales como:

sizeof(char) ≤ sizeof(short int) ≤ sizeof(int) ≤ sizeof(long int)

Sin embargo, muchos suponen que en base a esto jerarquía, long debe tener 32 bits. Sin embargo, el Estándar establece explícitamente que el número de bits en un byte está definido por la implementación.

Afirmación de Alf P. Steinbach

A pesar de esta aparente contradicción, Alf P. Steinbach afirmó que se garantiza que long será de 32 bits. Basó esta afirmación en el límite implícito del rango de valores que puede contener un largo (LONG_MIN a LONG_MAX).

El Estándar C hace referencia al Estándar C (18.3.2), que define:

LONG_MIN ≤ -2^31   1
LONG_MAX ≥ 2^31 - 1

Conexión a representación de 32 bits

Si bien esto establece un rango largo, no garantiza explícitamente 32 bits. Sin embargo, hay dos posibilidades:

  1. Representación en complemento a dos:
    Si los números negativos se representan en complemento a dos, almacenar LONG_MIN o LONG_MAX requiere 32 bits.
  2. Bit de signo explícito:
    Si se usa un bit de signo para números negativos, el almacenamiento total aún requiere 32 bits.

Conclusión

Aunque el estándar C no requiere explícitamente que long tenga 32 bits, el requisito de rango mínimo (LONG_MIN a LONG_MAX) lo requiere implícitamente. Esto se debe a que representar estos valores requiere 32 bits de almacenamiento o un mecanismo específico de implementación con capacidad de valor equivalente. Por lo tanto, se puede concluir que C garantiza que long tenga al menos 32 bits.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3