Время выполнения нулевого оператора в C - PullRequest
0 голосов
/ 30 октября 2019

Как компилятор интерпретирует нулевые операторы в C? С точки зрения времени исполнения. (пустое ";" т.е. без выражения). Будет ли он оптимизировать код во время выполнения, если встретит пустые операторы, удалив их.

1 Ответ

4 голосов
/ 30 октября 2019

Компиляторы заботятся только о наблюдаемом поведении. Компилируете ли вы

int main() {
   ;;;;;;;;;;;;;;;;;;
   return 0;
}

или

int main() {
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    return 0;
}

, это не имеет никакого значения для конечного исполняемого файла. Наблюдаемое поведение обоих примеров одинаково.

Если вы хотите убедить себя, посмотрите на вывод компиляторов (это отличный инструмент: https://godbolt.org/z/bnbxiP) или попробуйте профилировать приведенные выше примеры (но не ожидайте получения значимых чисел;).

Я предлагаю не думать о коде как о способе общения с вашим процессором. Когда вы пишете код, вы не выражаете инструкции для своего процессора. Код - это скорее рецепт для компилятора, и ваш компилятор гораздо лучше знает, каквмешивать процессор, чем любой человек. Небольшая разница, но я думаю, что это помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...