Я не понимаю, почему вы хотите (c2 - c1 == 0)
вместо c1 == c2
, почему бы не пойти по маршруту
if ((c1 == c2) && (c1 != c3)){
do_stuff();
}
или
if ((c1 != c3) && (c1 == c2)){
do_stuff();
}
Как примечание, нет никакого штрафа или преимущества в переключении c1 для c2 где-либо.Из вышесказанного, размещение условия с наибольшей вероятностью неудачи первым немного более эффективно, поскольку второе условие не будет оцениваться, если первое не выполнено.
Также обратите внимание, что это микрооптимизация, вам никогда не следуетучитывая скорость.
Третье замечание: если ваша программа больше ничего не делает, и завершает работу, если это условие не выполняется, и вы действительно хотите микрооптимизировать (чего вы не делаете), я предлагаю не анализироватьаргументы, прежде чем вы знаете, что они необходимы.если c1 будет в большинстве случаев не равен c2, то вы можете подождать с помощью синтаксического анализа c3, пока не узнаете, что нужно проверить его.Это строго теория.Не делайте этого на практике, так как это сделает ваш код намного труднее для чтения.Гораздо понятнее обработать все переменные командной строки как можно быстрее.