crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Нюанс оператора вывода в поток
Litkevich Yuriy
  опции профиля:
сообщение 8.4.2010, 15:16
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Тут для себя интересное открытие совершил. Был код:
int size = combo->count();
int index = 0;
qDebug() << "=== INDEX -" << index << "===";
while (index != size){
    qDebug() << "INDEX:" << index << "\tVALUE:" << combo->itemText(index++);
}
Ожидал, что будет напечатано:
=== INDEX - 0 ===
INDEX: 0        VALUE: "text-1"
INDEX: 1        VALUE: "text-2"
Однако напечатано было:
=== INDEX - 0 ===
INDEX: 1        VALUE: "text-1"
INDEX: 2        VALUE: "text-2"
Я полагал, что инкремент будет последней операцией, однако он почему-то стал второй. Т.е. получается выполнение идёт с конца оператора вывода в поток.
Код переделал так:
int size = combo->count();
int index = 0;
qDebug() << "=== INDEX -" << index << "===";
while (index != size){
    qDebug() << "INDEX:" << index << "\tVALUE:" << combo->itemText(index);
    index++;
}
тогда стало печататься как ожидаемо.

Может кому-то пригодится
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Tonal
  опции профиля:
сообщение 15.4.2010, 10:17
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Цитата(Litkevich Yuriy @ 12.4.2010, 17:29) *
я избегаю использовать for, т.к. его форма записи для меня не очевидна, нужно помнить, а не просто читать, каково его поведение.

Выход из циклов в С всегда по лжи - помнить нужно только это.
Базовые формы языка нужно знать, аднака. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 17:31