Есть ли различия между (var> x) и (x <var)? - PullRequest
0 голосов
/ 24 сентября 2018

Я видел, что встроенное программирование использует условия в обратном порядке, например, литерал слева, а не справа в условных проверках.

( var > 0) and ( 0 < var) 

Есть ли причина для этого?или это просто стиль кодирования?

Спасибо

РЕДАКТИРОВАТЬ: Спасибо всем за ответы и прояснение моих сомнений.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Это просто личный вкус.Ну, некоторые утверждают, что в сравнениях на равенство литерал должен быть слева, чтобы получить ошибку компилятора для непреднамеренных назначений:

предназначено:

if(x == 42) // ...

опечатка:

if(x = 42) // ... most likely a warning

ошибка компилятора:

if(42 = x) // ...
0 голосов
/ 24 сентября 2018

Они эквивалентны.Единственная разница может быть, если 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).

Как отмечает Макс Лангоф, этообратное условие называется условия Йода из-за того, что порядок отличается от обычного английского.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...