Мой лучший друг-отладчик!
|
|
1 | |
Порядок вычисления выражения в msvc c++05.03.2016, 16:13. Показов 479. Ответов 5
Метки нет (Все метки)
Доброго дня всем. Понимаю, что компил оффтопик, но всё же. Пусть у нас есть выражение a = foo() + bar();
Известно, что стандарт плюсов не регулирует, какая функция выполниться раньше - порядок вычисления тут неопределён. Но мне сказали, что именно в компиле вижлы считается слева направо и нет никакой неопределенности. Так ли это?
0
|
05.03.2016, 16:13 | |
Ответы с готовыми решениями:
5
Порядок вычисления выражения Порядок вычисления выражения Почему в MSVC++ 2008 компилируется, а в MSVC++ 2010 вылезает много ошибок? Переход от MSVC 2017 к MSVC 2019 |
Вездепух
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
|
|
05.03.2016, 18:25 | 2 |
Нет, разумеется. Ни спецификация языка C++, ни данный компилятор не документирует порядок вычисления выражений в таком случае. Поэтому порядок вычисления не определен и не предсказуем.
Кто-то может быть пытался "проверять" это на практике, перепробовал массу разных вариантов и конфигураций, и пришел к выводу, что в данном компиляторе вычисления всегда делаются слева направо... Но это была не более чем наивная и бессмысленая трата времени. Доказать стабильность порядка вычисления через практические эксперименты невозможно.
1
|
Вездепух
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
|
|
05.03.2016, 18:43 | 4 |
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
||||||
05.03.2016, 20:09 | 5 | |||||
Пожалуйста, в данном конкретном варианте посчитал справа налево.
0
|
Мой лучший друг-отладчик!
|
||||||
05.03.2016, 21:46 [ТС] | 6 | |||||
DrOffset, спасибо большое за интересный пример! А можно ли заставить примерно такой код выполняться не слева направо в вижловском компиляторе?
0
|
05.03.2016, 21:46 | |
05.03.2016, 21:46 | |
Помогаю со студенческими работами здесь
6
Порядок вычисления Опишите процесс вычисления выражения заданного выражения 3 + 2 * x -0,5 – 4 / x. Обраб отайте ошибку извлечения квадратного корня из отрицательного Порядок вычисления операций порядок вычисления выражений Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |