Я прочитал порядок оценки выражений в аргументах функций, а двоичные операторы не определены в C. Что это значит и когда я должен быть осторожным?Когда порядок оценки важен
ответ
Просто не зависеть от этого. Если у вас есть код:
func(a(), b(), c());
Тогда порядок исполнения a()
, b()
и c()
не имеет значения для правильности вашей программы. Если это так (например, если a()
открывает ресурс, и c()
закрывает его), то у вас есть что-то опасное здесь.
Самый простой обходной путь, чтобы написать такой код, как это:
int a_result = a();
int b_result = b();
int c_result = c();
func(a_result, b_result, c_result);
Вот упрощенный пример:
SomeCall(Writefile(handle) , Closefile(handle)) ;
В каком порядке две функции называются в не указано, и вы можете закрыть файл, прежде чем вы даже получите писать в него, даже если порядок вызовов логически выглядит правильным.
Почему это «логически выглядит правильно»? Мне кажется, что вы делаете то, что должно быть заказано без заказа, то есть неверно. –
@KerrekSB Потому что мы читаем слева направо и вниз. Например, код может быть разделен на отдельные строки. Помните, что OP не является экспертом, а логика играет определенную роль. – 2501
- 1. Почему порядок создания виджетов важен?
- 2. Важен ли порядок обработки исключений?
- 3. Как вы справляетесь с сложными ситуациями, когда порядок операций важен?
- 4. Почему порядок объявлений важен для статических инициализаторов?
- 5. Почему порядок создания DataoutputStream и BufferedWriter важен?
- 6. Почему порядок операторов #include так важен?
- 7. Насколько важен порядок столбцов в индексах?
- 8. Проверка строки равенство где порядок не важен
- 9. Порядок оценки в C++
- 10. eval function - порядок оценки
- 11. VBA: порядок оценки
- 12. Порядок оценки короткого замыкания
- 13. Порядок оценки с исключением
- 14. Порядок оценки двойного назначения
- 15. Порядок оценки нового выражения?
- 16. Порядок булевой оценки
- 17. Вычитание - Порядок оценки
- 18. C++ Порядок оценки
- 19. порядок оценки оператора сравнения?
- 20. Порядок оценки Javascript
- 21. Порядок оценки в поиске
- 22. Порядок оценки кода Python?
- 23. Порядок оценки, упражнение SICP
- 24. порядок оценки параметров функции
- 25. порядок оценки при инициализации
- 26. Макро порядок оценки
- 27. Порядок оценки C#
- 28. Порядок оценки условного оператора
- 29. Как контролировать порядок оценки?
- 30. Порядок оценки при инициализации
возможный дубликат [Поясните порядок evalution в Printf] (http://stackoverflow.com/questions/12960241/explain-the -order-of-evalution-in-printf) – 2501
Возможный дубликат [Порядок оценки параметров перед вызовом функции C] (http://stackoverflow.com/questions/376278/parameter-evaluation-order-before-a-function -calling-in-c) – WhozCraig
Вы знаете, что "* оценка выражения [an] [s] *" означает/is? – alk