Beide sicherlich den gleichen Code erzeugen, so , was die Gesamtfunktion Ziel ist die bessere Auswahl vermittelt:
unsigned int i = ...;
assert(i > 0); /*option 1*/
assert(i != 0); /*option 2*/
Option 1 besser funktioniert in den meisten Fällen, da es eine positive Behauptung ist: Was sollte der Wert sein vs. was es nicht sein sollte. Normalerweise ist das einfacher zu verstehen. Auch wenn die arithmetische Natur von i
getestet wird, ist dies der Weg zu gehen.
Option 2 funktioniert besser in begrenzten Fällen, wenn i
ausschließlich für seine Null oder Nicht-Null-Ness verwendet wird - insbesondere wenn es sich um eine Sammlung von logischen Bits handelt, deren arithmetischer Wert irrelevant ist.
'unsigned int' kann' 0' sein. – birryree
Ich weiß. Deshalb muss ich behaupten. –
Es kann immer noch 0 – ColdSteel