|  23.10.2015 / 04:00 |  | 
| Jahak    Пользователь 
  Сейчас: Offline 
 Имя: КонстантинРегистрация: 16.01.2012
 
 | Кто-нибудь может мне объяснить, зачем тут  используется цикл do{ #code.. }while(false)   ведь он выполнится лишь один раз или я чего-то незнаю? Изменено Jahak (23.10 / 04:02) (всего 1 раз)
 | 
|  23.10.2015 / 07:33 |  | 
| aRiGaTo    Пользователь 
  Сейчас: Offline 
 Имя: SnorkОткуда: Yerevan
 Регистрация: 03.02.2010
 
 | __________________Jahak, чтобы очистить совесть и не использовать goto. В любой моменты мы можем выйти из этого «цикла» с помощью break.  Пример: // инициализация ресурсовdo {  // операции  ...  {    // возможно появление ошибки    // откат изменений      break;  }  ...  // операции} while (false)// освобождение ресурсов
   don't tread on me | 
|  23.10.2015 / 14:00 |  | 
| Jahak    Пользователь 
  Сейчас: Offline 
 Имя: КонстантинРегистрация: 16.01.2012
 
 | aRiGaTo,  Я знаю что такое goto и break, но вопрос не в этом. Я спросил зачем они используют цикл когда можно и без него, ведь разницы в данном случае никакой, что с циклом, что без цикла, результат один и тот же    | 
|  23.10.2015 / 14:11 |  | 
| Dimon638    Пользователь 
  Сейчас: Offline 
 Регистрация: 12.04.2011
 | Jahak, Цитата aRiGaTo: Jahak, чтобы очистить совесть и не использовать goto.
  | 
|  23.10.2015 / 14:54 |  | 
| aRiGaTo    Пользователь 
  Сейчас: Offline 
 Имя: SnorkОткуда: Yerevan
 Регистрация: 03.02.2010
 
 | __________________Jahak, говорю же, чтобы можно было прервать последовательность операций в любом её месте. По-нормальному это выглядит так: defun foo() {  // Инициализация  bar();  // Освобождение ресурсов} proc bar() {  // Код  if (caseA) return;  // Код  if (caseB) return;  // Код}
А do { ... } while (false) использует вообще непонятно кто    Видимо жадные до стека вызовов.
   don't tread on me | 
|  23.10.2015 / 15:02 |  | 
| Freddy    Пользователь 
  Сейчас: Offline 
 Имя: ИгорьОткуда: Воронеж
 Регистрация: 30.01.2010
 
 | Цитата Jahak:Кто-нибудь может мне объяснить, зачем тут используется цикл do{ #code.. }while(false)  ведь он выполнится лишь один раз или я чего-то
 Это трюк того, чтобы при раскрытии макроса получился компилируемый код, когда после вызова макроса стоит точка с запятой в конце. Здесь подробнее можно посмотреть, подраздел "Multi-Statement Macros": https://mikeash.com/pyblog/fri...tips-and-tricks.html | 
|  23.10.2015 / 15:03 |  | 
| Naik    Пользователь 
  Сейчас: Offline 
 Имя: %name%Регистрация: 14.03.2010
 
 | aRiGaTo, я там не нашел ни break, ни continue, может в макросах где-то есть    Примерно так хотел сделать goto в трансляторе MB -> JavaИзменено Naik (23.10 / 15:05) (всего 2 раза)
 | 
|  23.10.2015 / 15:10 |  | 
| aRiGaTo    Пользователь 
  Сейчас: Offline 
 Имя: SnorkОткуда: Yerevan
 Регистрация: 03.02.2010
 
 | __________________ 
   don't tread on me | 
|  30.10.2015 / 17:35 |  | 
| Jahak    Пользователь 
  Сейчас: Offline 
 Имя: КонстантинРегистрация: 16.01.2012
 
 |   Выкладываю небольшую стопку книжек по C++ для всех , которую я все еще читаю   | 
|  30.10.2015 / 18:00 |  | 
| HeWeD    Пользователь 
  Сейчас: Offline 
 Регистрация: 11.10.2015
 | Я школьник. Мне 11 лет, скажите, как выучить ц++? Желательно побыстрее и ничего не делая. Просто, я хочу зделать гта 5 на калькуляторы, а то у меня комп ни тянет. Вот хочется переделать и заработать много денег.
 Бан от Ксакеп: Причина: обратиться к сенсею и перестать флудить. |