Нюанс оператора вывода в поток |
Здравствуйте, гость ( Вход | Регистрация )
Нюанс оператора вывода в поток |
Litkevich Yuriy |
8.4.2010, 15:16
Сообщение
#1
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Тут для себя интересное открытие совершил. Был код:
Ожидал, что будет напечатано: Однако напечатано было: Я полагал, что инкремент будет последней операцией, однако он почему-то стал второй. Т.е. получается выполнение идёт с конца оператора вывода в поток.Код переделал так: тогда стало печататься как ожидаемо.Может кому-то пригодится |
|
|
Влад |
8.4.2010, 21:30
Сообщение
#2
|
Участник Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: 8 |
Попробуй сам себе ответить на следующие вопросы: что есть выражение "qDebug() << нечто" в смысле языка C++ ? Где точки следования? В каком порядке будут вычисляться подвыражения этого полного выражения? Почему? В какой момент они должны быть вычислены? Почему?
|
|
|
Litkevich Yuriy |
8.4.2010, 22:04
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Tonal |
12.4.2010, 10:43
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
Это один из видов классического UB.
Твой код эквивалентен следующему:
Вывод может быть как 0 так и 2. Да, код вывода я бы на for переделал. |
|
|
Litkevich Yuriy |
12.4.2010, 13:29
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
я бы на for переделал я избегаю использовать for, т.к. его форма записи для меня не очевидна, нужно помнить, а не просто читать, каково его поведение. Т.е. выход по истинности или ложности. С while этой проблемы для меня нет. т.к. я просто читаю:
С паскалеподобным for у меня тоже нет проблем:
|
|
|
Tonal |
15.4.2010, 10:17
Сообщение
#6
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
|
|
|
Текстовая версия | Сейчас: 22.11.2024, 11:40 |