Любое отличие, которое он может внести, - это порядок, в котором будут оцениваться аргументы. a != b
обычно оценивает a
, затем оценивает b
и сравнивает их, в то время как b != a
делает это наоборот. Однако где-то я слышал, что порядок оценки в некоторых случаях не определен.
Это не имеет большого значения для переменных или чисел (если переменная не является классом с перегруженным оператором !=
), но это может иметь значение, когда вы сравниваете результаты некоторых вызовов функций.
Рассмотрим
int x = 1;
int f() {
x = -1;
return x;
}
int g() {
return x;
}
Если предположить, что операнды вычисляются слева направо, то при вызове (f() != g())
будет получено false
, поскольку f()
будет равно -1
, а g()
- -1
- тогда как (g() != f())
даст true
, потому что g()
будет оцениваться до 1
и f()
- до -1
.
Это всего лишь пример - лучше не писать такой код в реальной жизни!