Насколько портативно это преобразование. Могу ли я быть уверен, что оба утверждения верны?
int x = 4<5;
assert(x==1);
x = 4>5;
assert(x==0);
Не спрашивайте почему. Я знаю, что это некрасиво. Спасибо.
assert( 4 < 5);
иassert(!( 4 > 5));
(4 < 5) ? 1 : 0
если мне действительно нужно преобразовать логическое значение в 0 или 1. Хороший компилятор, скорее всего, выдаст тот же машинный код, и он более понятен для человека.
assert(x!=0)
. Даже если bool (true) преобразует переносимое в int (1), утверждение «not false» имеет более читаемое выражение.