Наскільки портативно це перетворення. Чи можу я бути впевнений, що обидва твердження проходять?
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), твердження "не помилково" мають більш читабельний вираз.