Здравствуйте, гость ( Вход | Регистрация )
Tonal | Дата 15.4.2010, 10:17 |
я избегаю использовать for, т.к. его форма записи для меня не очевидна, нужно помнить, а не просто читать, каково его поведение. Выход из циклов в С всегда по лжи - помнить нужно только это. Базовые формы языка нужно знать, аднака. |
|
Litkevich Yuriy | Дата 12.4.2010, 13:29 |
я бы на for переделал я избегаю использовать for, т.к. его форма записи для меня не очевидна, нужно помнить, а не просто читать, каково его поведение. Т.е. выход по истинности или ложности. С while этой проблемы для меня нет. т.к. я просто читаю:
С паскалеподобным for у меня тоже нет проблем:
|
|
Tonal | Дата 12.4.2010, 10:43 |
Это один из видов классического UB. Твой код эквивалентен следующему:
Вывод может быть как 0 так и 2. Да, код вывода я бы на for переделал. |
|
Litkevich Yuriy | Дата 8.4.2010, 22:04 |
что есть выражение "qDebug() << нечто" в смысле языка C++ ? у меня была аналогия с оператором "+", т.е.A + B + C которая распадается на: A + B = Результат1 и Результат1 + C но эта аналогия не работает для оператора "<<" |
|
Влад | Дата 8.4.2010, 21:30 |
Попробуй сам себе ответить на следующие вопросы: что есть выражение "qDebug() << нечто" в смысле языка C++ ? Где точки следования? В каком порядке будут вычисляться подвыражения этого полного выражения? Почему? В какой момент они должны быть вычислены? Почему? | |
Litkevich Yuriy | Дата 8.4.2010, 15:16 |
Тут для себя интересное открытие совершил. Был код: Ожидал, что будет напечатано: Однако напечатано было: Я полагал, что инкремент будет последней операцией, однако он почему-то стал второй. Т.е. получается выполнение идёт с конца оператора вывода в поток.Код переделал так: тогда стало печататься как ожидаемо.Может кому-то пригодится |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 17:50 |