conversão bool para int: garantida para ser 0 ou 1?
em linguagens de programação como C e C, Bool é comumente usado para representar valores booleanos de verdadeiros e falsos. No entanto, nos bastidores, esses valores são frequentemente armazenados como números inteiros. Isso levanta a questão: quando um bool é convertido em um int, o resultado é garantido como 0 ou 1?
c
em c, a resposta é um retumbante sim. De acordo com o padrão C (§4.5/4), "um valor do tipo bool pode ser convertido em um valor do tipo int, com falsos se tornando zero e verdadeiro se tornando um". Isso significa que, quando um bool é convertido em um int em C, o resultado sempre será 0 ou 1. De acordo com o padrão C (§6.3.1.2/1), "Quando qualquer valor escalar é convertido em _bool, o resultado é 0 se o valor comparar igual a 0; caso contrário, o resultado é 1." Isso implica que, quando um bool (representado como _Bool em c) é convertido em um int, o resultado será novamente 0 ou 1. bool b = a; int c = 3 b; // 4
Neste exemplo, a variável BOOL B é inicializada com o valor de int a (que é 2), mas como os valores de BOOL são armazenados como 0 ou 1, b se torna 1. A adição subsequente de 3 resultados em C ou 1.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3