Мне интересно, как дорого объединить логические операторы? Каков наилучший способ их комбинирования?Объединить логические операторы в C
Например: В чем разница между следующими двумя утверждениями с точки зрения оптимизации?
1) if((!x || !y || !z) && (a != b))
2) if(!(x && y && z) && (a != b))
Я слышал от своих сверстников, что вы должны использовать операцию ANDing чаще, чем операцию ORing. Я новичок в языке C. Пожалуйста, помогите мне понять это. Любой материал или ссылка также будут полезны.
Просто оставьте это в компиляторе. Вероятно, это более эффективно в оптимизации такого материала. – alk
Боте же по закону ДеМоргана. – haccks
Обратите внимание на правило [короткое замыкание] (https://en.wikipedia.org/wiki/Short-circuit_evaluation) для оценки условных выражений в C. Если полное условное выражение может быть известно без оценки дальнейших выражений, это пропускаются. Поэтому будьте осторожны с любыми побочными эффектами, которые могут возникнуть, но не выполняйте (может быть изменение стоимости или вызов функции). Прямой ответ заключается в том, чтобы написать условие самым ясным способом, который будет понятнее всего: когда вы посмотрите на него в следующем году. –