Они эквивалентны.Единственная разница может быть, если operator<
/ >
перегружен, и эти перегрузки имеют разное значение (однако, не рекомендуется).
Я видел, как люди делали это для оператора равенства, чтобы избежать использования присвоенияmistakely.Так что вместо этого:
if (a==0) ...
Ошибочно написано:
if (a=0) ... // compiles, and not what we wanted, a assigned to zero, and "if" never taken
Если вместо этого мы использовали обратное сравнение:
if (0==a) ...
Тогда неправильная версия нене компилируем:
if (0=a) ... // doesn't compile
Но это не так уж важно сегодня, так как большинство компиляторов предупреждают вас за if (a=0)
.
Как отмечает Макс Лангоф, этообратное условие называется условия Йода из-за того, что порядок отличается от обычного английского.