Intereting Posts

Есть ли разница между i == 0 и 0 == i?

Возможный дубликат:
A == B vs B == A, Каковы различия

Первый код:

if(i==0) {// do instructions here} 

Второй код:

  if(0==i) { // do instructions here } 

В чем разница между блоками?

Функционально нет никакой разницы.
Некоторые разработчики предпочитают записывать второй формат, чтобы избежать опечаток назначения (в случае, если вы пропустите a = ), чтобы компилятор предупреждал опечатки.
Второй класс известен как состояние Йоды .

Состояние Йоды

Я говорю, что нет никакой разницы, потому что вы не можете охранять себя от каждой мелочной детали и полагаться на компилятор, чтобы кричать вслух для вас. Если вы намереваетесь написать == вы должны ожидать, что будете писать == а не a = .
Использование второго формата просто приводит к некоторому неясному нечитаемому коду.
Кроме того, большинство компиляторов основного потока предупреждают о назначении вместо символа равенства, выдавая предупреждение, как только вы включаете все предупреждения (которые вы должны в любом случае).

Вторая версия должна быть более безопасной.

Если вы забудете один знак равенства, он не изменит значение i до нуля.

Функционально они одинаковы в C; Я не уверен в других языках, где приходят в игру уродливые вещи, такие как перегрузка операторов.

Стилистически последнее крайне противоречит интуиции, и лично я считаю его крайне уродливым. Дело в том, чтобы заставить компилятор выбросить ошибку, когда вы случайно напишете = вместо == , но хорошие компиляторы имеют возможность предупредить вас об этом в любом случае, поэтому это не нужно.

Да, они такие же, как и для C #. Для более сложных ситуаций посетите A == B vs B == A, каковы различия

Для C ++ возможно, хотя и маловероятно, что может быть разница. Это зависит от того, какой тип я. например

 struct Foo { int x; }; bool operator==(Foo lhs, int rhs) { return lhs.x == rhs; } bool operator==(int lhs, Foo rhs) { std::cout << "Hi!"; return true; } 

Кто-то, кто пишет такой код, должен быть расстрелян.

Когда вы пишете (0 == i) ошибку, использующую единицу, равную знаку по ошибке (например), если (i = 0) устраняется. Ничего больше.

никакая разница, некоторые люди предпочитают второй, чтобы поймать распространенную ошибку выполнения задания ( = ) вместо теста равенства ( == )

0 = i не смог бы при компиляции

В C # нет никакой разницы. Однако в C ++ была разница в производительности, поэтому вы видите, что оба используются в коде C # в эти дни – на самом деле я думаю о i ++ vs ++ i о производительности – 0 == i – общая рекомендация по кодированию в C / C ++ для избегать i = 0 в качестве случайной операции