Каково определение времени компиляции и времени выполнения в C? Я знаю, что sizeof() является оператором времени компиляции в C, но которые являются операторами времени выполнения в C?Операторы времени выполнения в C
ответ
компилирования операторы времени -> Рассчитано во время компиляции
операторов время выполнения -> Во время выполнения
Пример:
ВХОД А, В
С = А + В
Здесь + - оператор времени выполнения, поскольку он зависит от введенных значений.
Для C; различные оптимизации (например, постоянное распространение и постоянное сгибание) означают, что каждый оператор потенциально может быть выполнен во время компиляции (если это позволяет ситуация).
Для простого примера рассмотрим эту функцию:
int foo(int a, int b) {
return a+b;
}
Это выглядит как должно быть сделано во время выполнения добавления.
Теперь рассмотрим этот код:
int x = foo(1, 2);
Теперь компилятор может «инлайн» функция, размножать константы, и сделать добавление во время компиляции. В итоге вы получите int x = 3;
(плюс потенциально избыточная копия функции foo()
, которая может выполнять добавление во время выполнения).
Есть также случаи, когда оптимизация не может быть выполнена во время компиляции, но может быть выполнена при связывании (с LTO/Link Time Optimization); где оператор не оценивается во время компиляции или времени выполнения. Простым примером может служить код в другом объектном файле («единица компиляции») int x = foo(1, 2);
.
Также верно и обратное: ничто не гарантирует, что оператор будет оцениваться во время компиляции, когда это возможно; поэтому вы не можете сказать, что оператор всегда «компилирует время». Для простого примера рассмотрим объединение строк (например, char *myString = "Hello " "World!";
) - было бы законным для компилятора генерировать код, который выполняет конкатенацию во время выполнения (хотя трудно подумать о причине, по которой компилятор захочет).
- 1. Операторы времени компиляции в C
- 2. Проверка времени выполнения C
- 3. C библиотека времени выполнения
- 4. C++ Эффективность времени выполнения
- 5. Операторы времени компиляции
- 6. сокращение времени выполнения (C++)
- 7. Ошибка времени выполнения в C
- 8. расчет времени выполнения в C++
- 9. C#: генерация запроса времени выполнения и выполнения
- 10. Операторы и операторы C
- 11. Операторы с форматом времени
- 12. C Библиотека времени выполнения 2
- 13. Создание класса времени выполнения C#
- 14. Ошибка необработанного времени выполнения C#
- 15. Система времени выполнения Objective-C
- 16. C++ подсчет времени выполнения ошибки
- 17. C ошибка времени выполнения # 3
- 18. C++ измерение времени выполнения программы
- 19. C Malloc времени выполнения Ошибка
- 20. Ошибка времени выполнения C-программа
- 21. Полиморфизм времени выполнения C++/Boost
- 22. Проблема времени выполнения многопоточности C++
- 23. Векторные операторы в C#
- 24. C++ операторы перегруженные как следствие («+», «+ =»)
- 25. строки в C++ ошибка времени выполнения
- 26. ошибки времени выполнения - указатели в c
- 27. Измерение точного времени выполнения в C
- 28. Таймер ограничения времени выполнения в C
- 29. Ошибка времени выполнения в коде C++
- 30. Разрешение функции времени выполнения в C?
Все, что зависит от значения операнда, например '+' и '*'. – Barmar
@LPs Ответы, по-видимому, не о операторах. – Barmar
примечание: легче перечислить те, которые оцениваются во время компиляции ... –