Мне нравится «установить» / «очистить», но будьте осторожны с неоднозначностью в вашей фразе. Как указывает Филип , «установка переменной bool» может означать запись некоторого значения в переменную. Но «установка флага» более понятна.
Связанная терминология: преобразование 0 / ненулевого целого числа в значение 0/1 называется «логическим значением» .
Если вы на самом деле используете значение 0/1 как целое число (а не как true / false bool
), вы можете использовать это слово. В противном случае он, вероятно, появится, только если вы говорите о стоимости операций, которые должен выполнить компилятор. (Или, если вы вручную векторизуете с помощью SIMD, сравните, чтобы получить все ноль / все-один бит в каждом элементе вектора).
В C и C ++ a bool
может неявно преобразовывать обратно в целое число как 0 или 1, а в обычных реализациях bool
хранится как однобайтовое значение, равное 0 или 1 (не просто любое ненулевое значение). Это позволяет эффективно a && b
, но на практике многие компиляторы C пропустили оптимизацию .
bool booleanize(int a) { return a; } // C++
Эта функция компилируется в несколько инструкций (не включая ret
) на большинстве архитектур. (MIPS - интересное исключение, имеющее инструкции сравнения в регистр вместо отдельного регистра флага / кода условия). в проводнике компилятора Godbolt для большого пальца x86-64, MIPS и ARM мы можем увидеть версию x86-64:
test edi, edi # set flags according to a & a
setne al
ret # return value in AL, the low byte of RAX
Извините, этот пример того, что логическое выражение получилось немного большим / не по теме!