Quanto è portatile questa conversione. Posso essere sicuro che entrambe le affermazioni passino?
int x = 4<5;
assert(x==1);
x = 4>5;
assert(x==0);
Non chiedere perché. So che è brutto. Grazie.
assert( 4 < 5);
eassert(!( 4 > 5));
(4 < 5) ? 1 : 0
se avessi davvero bisogno di convertire un valore booleano in 0 o 1. Un buon compilatore produrrà probabilmente lo stesso codice macchina ed è più chiaro per un lettore umano.
assert(x!=0)
. Anche se bool (true) converte il portatile in int (1), le affermazioni "non false" hanno un'espressione più leggibile.