С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
435 / 246 / 43
Регистрация: 05.08.2013
Сообщений: 1,670
1

Do {.} while (false)

02.10.2015, 09:59. Показов 5064. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
do
{
  //код
} while(false)
Встречал пару раз такой код, собственно для чего может потребоваться такая обертка?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.10.2015, 09:59
Ответы с готовыми решениями:

Doc.save(false, False) = Всегда Возвращает False
Собственно база находится локально - не реплика f = doc.save(false, false) когда документ...

Doc.save(false,false)=false
Коллеги, как отличить ошибку сохранения из-за конфликта от отмены сохранения из-за неизменности...

на кнопку кликаешь, Image1.Visible:=False; Image2.Visible:=True; Eще раз ликаешь, Image1.Visible:=True; Image2.Visible:=False.
на кнопку кликаешь, Image1.Visible:=False; Image2.Visible:=True; Eще раз ликаешь,...

If(false) vs. while(false)
if(false) писать можно, а while(false) - нет. Нашёл ответ почему - тут:...

7
67 / 67 / 19
Регистрация: 13.07.2015
Сообщений: 219
02.10.2015, 10:08 2
Мотороллер, видимо был цикл, потом необходимость отпала, взяли быстренько потерли условие на false. Или создали область видимости локальных переменных, хотя почему бы не взять просто {}.
С другой стороны без контекста сложно сказать, но я подобный код избегаю.
1
Эксперт .NET
11139 / 7053 / 1580
Регистрация: 25.05.2015
Сообщений: 21,327
Записей в блоге: 14
02.10.2015, 10:14 3
Лучший ответ Сообщение было отмечено Мотороллер как решение

Решение

Мотороллер, это один из вариантов обхода нежелательных оптимизаций компилятора в макросах.
А также способ прервать последовательность с помощью break;
1
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
02.10.2015, 12:31 4
И когда в макросе надо выполнить ряд действий, заключают в такую конструкцию
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.10.2015, 14:16 5
Цитата Сообщение от Rius Посмотреть сообщение
один из вариантов обхода нежелательных оптимизаций компилятора в макросах
Не оптимизаций, а ошибочного использования в коде. Подробнее тут.
1
56 / 54 / 33
Регистрация: 05.11.2014
Сообщений: 259
02.10.2015, 14:46 6
Возможен такой вариант (иногда очень кстати)
C++
1
2
3
4
5
6
7
8
9
do
{
   A = // вычисление A
   switch(A) {
       case 0: break;
       case 1: A++; break;
       case 3: continue; // повтор цикла
   }
} while(false)
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.10.2015, 15:15 7
Цитата Сообщение от PavelPol Посмотреть сообщение
Возможен такой вариант (иногда очень кстати)
continue в данном случае переносит в точку перед while(false) (а не после do), т.е. нельзя через continue "удлинить" цикл, если условие продолжения цикла false;
1
Evg
Эксперт CАвтор FAQ
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
02.10.2015, 15:21 8
Цитата Сообщение от Мотороллер Посмотреть сообщение
Встречал пару раз такой код, собственно для чего может потребоваться такая обертка?
С вероятностью 99% ты видел это внутри макроса. Зачем это делается - см. https://www.cyberforum.ru/blogs/18334/blog104.html раздел 2.5

Добавлено через 43 секунды
Цитата Сообщение от Rius Посмотреть сообщение
это один из вариантов обхода нежелательных оптимизаций компилятора в макросах
Не бывает такого
2
02.10.2015, 15:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2015, 15:21
Помогаю со студенческими работами здесь

JS и return false
Не могу понять зачем в обработчике события в конце писать return false. Прочитал что это...

enabled:=false;
Не работает функция TTimer.Enabled:=false; В чем тогда проблема? Пробывал закрывать в скобки и...

true/false
Даны координаты (как целые от 1 до 8) двух различных полей шахматной доски. Если конь за один ход...

TRue or false
составить программу, печатающее значение true или false. Даны вещественные положительные числа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru