"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 > ¿La conversión de un valor booleano a un número entero siempre da como resultado 0 o 1?

¿La conversión de un valor booleano a un número entero siempre da como resultado 0 o 1?

Publicado el 2024-11-18
Navegar:132

Does Converting a Boolean to an Integer Always Result in 0 or 1?

¿Puede un valor booleano siempre convertirse en cero o uno cuando se convierte en un número entero?

Al convertir un valor booleano en un número entero, aparentemente muchos compiladores retiene sólo 0 o 1, lo que genera dudas sobre la confiabilidad de este comportamiento. Examinemos un ejemplo:

int a = 2;
bool b = a;
int c = 3   b; // What is the result? 4 or 5?

Respuesta: Sí, se garantiza que bool será 0 o 1 cuando se convierte a un número entero.

En C:

El estándar C (§4.5/4) establece explícitamente: "Un rvalue de tipo bool se puede convertir en un rvalue de tipo int, convirtiéndose en falso cero y verdadero se convierten en uno."

En C:

Cuando un valor se convierte a _Bool, se convierte en 0 o 1 (§6.3.1.2/1): "Cuando cualquier valor escalar se convierte a _Bool, el resultado es 0 si el valor se compara con 0; de lo contrario, el resultado es 1."

Al convertir a int, el proceso es sencillo porque int puede contener 0 y 1, por lo que no hay cambios en el valor (§6.3.1.3).

Ú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