Я видел, как GCC превращал условный оператор в инструкции cmov
(условное перемещение), в то время как операторы if
превращались в ветви, что означало, что в нашем случае код был быстрее при использовании условного оператора.Но это было пару лет назад, и, скорее всего, сегодня оба будут компилироваться в один и тот же код.
Нет гарантии, что они будут компилироваться в один и тот же код.Если вам нужна производительность, то, как всегда, мера .И когда вы измерили и обнаружили, что: 1. ваш код слишком медленный, и 2. именно этот кусок кода является виновником, тогда изучите код сборки, сгенерированный компилятором, и проверьте сами, что происходит.
Не доверяйте золотым правилам, таким как «компилятор всегда будет генерировать более эффективный код, если я использую условный оператор».