"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Em C ++ e C, é sempre 0 ou 1 quando convertido em um número inteiro?

Em C ++ e C, é sempre 0 ou 1 quando convertido em um número inteiro?

Postado em 2025-04-13
Navegar:909

Is Bool Conversion to Int Always 0 or 1 in C   and C?

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.

Tutorial mais recente Mais>

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