"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 > A conversão de um booleano em um número inteiro sempre resulta em 0 ou 1?

A conversão de um booleano em um número inteiro sempre resulta em 0 ou 1?

Publicado em 2024-11-18
Navegar:586

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

Um booleano sempre pode se tornar zero ou um quando convertido em um número inteiro?

Ao converter um valor booleano em um número inteiro, muitos compiladores aparentemente retém apenas 0 ou 1, levantando questões sobre a confiabilidade desse comportamento. Vamos examinar um exemplo:

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

Resposta: Sim, é garantido que bool seja 0 ou 1 quando convertido em um número inteiro.

Em C :

O padrão C (§4.5/4) afirma explicitamente: "Um rvalue do tipo bool pode ser convertido em um rvalue do tipo int, com false se tornando zero e true se tornando um."

Em C:

Quando um valor é convertido para _Bool, ele se torna 0 ou 1 (§6.3.1.2/1): "Quando qualquer valor escalar é convertido para _Bool, o resultado é 0 se o valor for igual a 0, caso contrário, o resultado será 1."

Ao converter para int, o processo é simples porque int pode conter 0 e 1, portanto não há alteração no valor (§6.3.1.3). ).

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