¿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).
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