Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Основы C++ | Раскрытие цикла while (s--) { ... };

Ответить
Настройки темы
Основы C++ | Раскрытие цикла while (s--) { ... };

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Объясните мне, пожалуйста, как работает условие оператора while в отрывке:

Код: Выделить весь код
int s = 12;
Код: Выделить весь код
int* cp = c.v;
int* ap = a.v;
int* bp = b.v;
while (s--) *cp++ = *ap++ + *bp++;


Отправлено: 13:46, 28-07-2005

 

Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


Цитата:
while (s--)
пока s не равно нулю, уменьшаем его на единицу и выполняем код за ним (*cp++ = *ap++ + *bp++)
равносильно
Код: Выделить весь код
while (s != 0)
{
s--; // или s = s - 1;
*cp++ = *ap++ + *bp++;
}

Отправлено: 13:54, 28-07-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Вооще-то вот как
[code]

loop:
s--;
if (s==0) goto exit;
*cp = *ap + *bp;
bp++;
ap++;
cp++;
goto loop;
exit:

[code]

Отправлено: 14:16, 10-08-2005 | #3


Пользователь


Сообщения: 90
Благодарности: 1

Профиль | Отправить PM | Цитировать


А чтобы было ещё понятнее. К тому, что уже сказано разжую, следующие истины:
1. Любое выражение типа while(s) if(s) означает while(s!=0) if(s!=0)
2. s-- (равно как s++) означает сначала взять (присвоить, сравнить и.т.д) значение s, а потом отнять (добавить) 1.
То есть
Код: Выделить весь код
int s = 1;
int i = s--
даст i=1, a
Код: Выделить весь код
int i = --s
даст i = 0

Соответственно, если бы в твоём примере было
Код: Выделить весь код
while(--s) ...
Это бы означало
Код: Выделить весь код
while (s - 1 !=0 ) s = s -1 ...
Меня в своё время очень забавляло написание while(s-->0). Пока s стремиться к нулю ...

Отправлено: 20:35, 20-08-2005 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Основы C++ | Раскрытие цикла while (s--) { ... };

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Раскрытие имени файла во вложеном For dARKest Скриптовые языки администрирования Windows 7 17-07-2009 00:15
VBA - выход из цикла иоанн Программирование и базы данных 2 26-05-2009 22:24
CMD/BAT - [решено] Использование If в теле цикла For ven00m Скриптовые языки администрирования Windows 3 11-01-2008 17:09
Реестр. Основы Evita Хочу все знать 2 21-03-2006 14:09
выбор из цикла slaine Вебмастеру 10 25-08-2005 12:36




 
Переход