Bool Conversion a int: garantizado para ser 0 o 1?
en lenguajes de programación como C y C, Bool se usa comúnmente para representar los valores booleanos de verdadero y falso. Sin embargo, detrás de escena, estos valores a menudo se almacenan como enteros. Esto plantea la pregunta: cuando un bool se convierte a un int, ¿se garantiza que el resultado sea 0 o 1?
c
en c, la respuesta es un resonancia que sí. De acuerdo con el estándar C (§4.5/4), "un rValue de tipo bool se puede convertir en un rValue de tipo int, con falso convertirse en cero y verdadero convirtiéndose en uno". Esto significa que cuando un bool se convierte en un int en C, el resultado siempre será 0 o 1.
c
en c, la situación es ligeramente diferente pero igualmente clara. De acuerdo con el estándar C (§6.3.1.2/1), "Cuando cualquier valor escalar se convierte en _bool, el resultado es 0 si el valor se compara igual a 0; de lo contrario, el resultado es 1." Esto implica que cuando un bool (representado como _bool en c) se convierte en un int, el resultado será nuevamente 0 o 1.
ejemplo práctico
para ilustrar este comportamiento en el código:
int a = 2; bool b = a; int c = 3 b; // 4
En este ejemplo, la variable BOOL B se inicializa al valor de int a (que es 2), pero dado que los valores de bool se almacenan como 0 o 1, b se convierte en 1. La adición posterior de 3 resultados en C se asigna el valor 4. Esto confirma que BOOL se convierte a IN como 1, garantizando un resultado de 0 o 1.
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