6 / 5 / 1
Регистрация: 17.12.2019
Сообщений: 12
1

Правила вычисления операндов при использовании cout для вывода нескольких выражений

17.12.2019, 09:46. Показов 565. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
элементы массива 1 и 2.
C++
1
2
cout << Y.PopHead() << endl;
cout << Y.PopHead() << endl;
выводит 1 2
C++
1
cout << Y.PopHead() << Y.PopHead() << endl;
выводит 2 1
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2019, 09:46
Ответы с готовыми решениями:

Правила вывода cout
Вопрос небольшой. (Кому то сейчас вспомнится Прата.) Тема пожалуй заезжена и даже чувствую вину за...

Порядок вычисления операндов при сложении
Есть такой пример int I = 2, k; k = (I=10)*(I=20); Чему в этом примере равно значение...

Создать программу для вычисления выражений (для a и b задаваемых при выполнении программы)
Добрый вечер . Прошу вас помочь. Задача вроде легкая но у меня ошибку выдает и не как не могу...

Программа для одновременного доступа нескольких пользователей при использовании БД
Помогите пожалуйста! Хочу создать программу для одновременного доступа нескольких пользователей...

4
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
17.12.2019, 09:58 2
Ничего не обезумел, это UB, поправьте если ошибаюсь, но в пределах одной инструкции у тебя 2 точки следования и порядок выполнения PopHead не определен
0
Вездепух
Эксперт CЭксперт С++
10895 / 5894 / 1611
Регистрация: 18.10.2014
Сообщений: 14,780
17.12.2019, 09:58 3
Цитата Сообщение от ChallaChavella Посмотреть сообщение
выводит 1 2
выводит 2 1
Так и должно/может быть в компиляторах С++ до стандарта С++17.

Порядок вычисления операндов выражения

C++
1
cout << Y.PopHead() << Y.PopHead() << endl;
в С++ с начала времен был неспецифицирован. Может первый PopHead() отработать первым, а может второй. Как получится, так получится. Ничего удивительного в этом никогда не было.

Только стандарт С++17 закрепил жесткое упорядочение слева направо в операторах сдвига и сделал поведение однозначным. Если хотите жесткий порядок - переводите свой компилятор в режим С++17 и надейтесь, что новые правила упорядочения там реализованы корректно.
0
6577 / 4562 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
17.12.2019, 10:01 4
Цитата Сообщение от ChallaChavella Посмотреть сообщение
элементы массива 1 и 2.
Покажи свой массив
0
Вездепух
Эксперт CЭксперт С++
10895 / 5894 / 1611
Регистрация: 18.10.2014
Сообщений: 14,780
17.12.2019, 10:15 5
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Только стандарт С++17 закрепил жесткое упорядочение слева направо в операторах сдвига и сделал поведение однозначным. Если хотите жесткий порядок - переводите свой компилятор в режим С++17 и надейтесь, что новые правила упорядочения там реализованы корректно.
... другими словами, если первый вариант выводит 1 2, то в компиляторе С++17 и второй вариант тоже обязан выводить именно 1 2. До С++17 второй вариант имеет право выводить и 1 2 и 2 1.

По этой причине, даже несмотря на гарантии С++17, очень не рекомендуется писать код, поведение которого так зависит от порядка вычисления операндов выражения.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2019, 10:15
Помогаю со студенческими работами здесь

Qt Ошибка при использовании cin cout. Tcp client
C Qt начал работать недавно. Хочу написать клиент, который просто принимает строку, отправляет её...

Ошибка в dll при обращении к потоку вывода cout
друзья программисты, подскажите пожалуйста, как решить проблему с dll. Выдаёт ошибку в функции...

Преобразовать массив цифр в строку для вывода на cout<<
Реализую класс длинных чисел (только+). Числа представляю в виде массиве, где каждый элемент это...

Не открывается окно вывода при использовании graphics.h
скажите, пожалуйста где ошибка, почему не открывается окно вывода. Что исправить и где?...

Очередность вывода echo при использовании функций
Уже который раз сталкиваюсь с одной и той же проблемой. Строка выводящая текст: echo...

Ошибки при использовании нескольких форм
Снова привет, мне уже надоело в дельфи при работе много форменном режиме. Создаешь 2 формы. Потом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru