«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > В C ++ и C, всегда это 0 или 1 при преобразовании в целое число?

В C ++ и C, всегда это 0 или 1 при преобразовании в целое число?

Опубликовано в 2025-04-13
Просматривать:662

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

преобразование Bool в int: гарантированно будет 0 или 1? Однако за кулисами эти значения часто хранятся как целые числа. Это поднимает вопрос: когда Bool преобразуется в INT, результат гарантированно является либо 0, либо 1? Согласно стандарту C (§4.5/4), «Rvalue of Type Bool может быть преобразована в Rvalue of Type int, причем ложь становится ноль и истинными». Это означает, что когда Bool преобразуется в int in c, результат всегда будет 0 или 1.

c

В C ситуация немного другая, но одинаково ясна. В соответствии со стандартом C (§6.3.1.2/1), «когда какое -либо скалярное значение преобразуется в _bool, результат равен 0, если значение сравнивает равное 0; в противном случае результат - 1.» Это подразумевает, что когда Bool (представлен как _bool в C), преобразуется в int, результат снова будет 0 или 1.

Практический пример

, чтобы проиллюстрировать это поведение в коде:

int a = 2; bool b = a; int c = 3 b; // 4

в этом примере переменная Bool B инициализируется к значению int a (что 2), но, поскольку значения BOOL хранятся как 0 или 1, B становится 1. Последующее добавление 3 приводит к присвоению c значение 4. Это подтверждает, что BOOL преобразуется в int как 1, гарантируя результат 0 или 1.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3