Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Мотороллер
429 / 241 / 37
Регистрация: 05.08.2013
Сообщений: 1,653
Завершенные тесты: 1
#1

Do {.} while (false) - C++

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

C++
1
2
3
4
do
{
  //код
} while(false)
Встречал пару раз такой код, собственно для чего может потребоваться такая обертка?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2015, 09:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Do {.} while (false) (C++):

Зачем false? - C++
void IntFillFunction(Array<int>& theArray) { bool Stop = false; int offset, value; while (!Stop) { cout << "Enter an...

true and false - C++
Уважаемые, программисты! Помогите, пожалуйста, с программой. Написать программу, которая печатает True или False в зависимости от...

False,True - C++
Помогите пожалуйста. Составить программу, печатающую TRUE, если указанное высказывание является истинным, и FALSE в противном случае. ...

Задача на true or false - C++
You have the implement a function, with the following signature: ABCheck(str). The argument str is of type string. The function...

вывод true и false - C++
Доброгов сем времени суток. Хотелось бы попросить помощи в решении этого задания, под цифрой 2, справа. треугольник у меня получился...

С++. вывод true/false - C++
помогите пожалуйста, почему не робит прога. должна вывести 1 если символ введеный с клавы гласная буква русского алфавита, иначе 0. ...

7
Митя800
53 / 54 / 13
Регистрация: 13.07.2015
Сообщений: 183
02.10.2015, 10:08 #2
Мотороллер, видимо был цикл, потом необходимость отпала, взяли быстренько потерли условие на false. Или создали область видимости локальных переменных, хотя почему бы не взять просто {}.
С другой стороны без контекста сложно сказать, но я подобный код избегаю.
1
Rius
Эксперт .NET
2800 / 1925 / 443
Регистрация: 25.05.2015
Сообщений: 6,297
Записей в блоге: 8
Завершенные тесты: 4
02.10.2015, 10:14 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Мотороллер, это один из вариантов обхода нежелательных оптимизаций компилятора в макросах.
А также способ прервать последовательность с помощью break;
1
rikimaru2013
C++ Game Dev
2438 / 1132 / 240
Регистрация: 30.11.2013
Сообщений: 3,688
02.10.2015, 12:31 #4
И когда в макросе надо выполнить ряд действий, заключают в такую конструкцию
1
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.10.2015, 14:16 #5
Цитата Сообщение от Rius Посмотреть сообщение
один из вариантов обхода нежелательных оптимизаций компилятора в макросах
Не оптимизаций, а ошибочного использования в коде. Подробнее тут.
1
PavelPol
39 / 39 / 16
Регистрация: 05.11.2014
Сообщений: 186
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
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.10.2015, 15:15 #7
Цитата Сообщение от PavelPol Посмотреть сообщение
Возможен такой вариант (иногда очень кстати)
continue в данном случае переносит в точку перед while(false) (а не после do), т.е. нельзя через continue "удлинить" цикл, если условие продолжения цикла false;
1
Evg
Эксперт CАвтор FAQ
18026 / 6258 / 427
Регистрация: 30.03.2009
Сообщений: 17,187
Записей в блоге: 27
02.10.2015, 15:21 #8
Цитата Сообщение от Мотороллер Посмотреть сообщение
Встречал пару раз такой код, собственно для чего может потребоваться такая обертка?
С вероятностью 99% ты видел это внутри макроса. Зачем это делается - см. http://www.cyberforum.ru/blogs/18334/blog104.html раздел 2.5

Добавлено через 43 секунды
Цитата Сообщение от Rius Посмотреть сообщение
это один из вариантов обхода нежелательных оптимизаций компилятора в макросах
Не бывает такого
2
02.10.2015, 15:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2015, 15:21
Привет! Вот еще темы с ответами:

BASS_Init возвращает FALSE - C++
проблема следующая: BASS_Init(-1, 44100, 0, 0, NULL); возвращает FALSE, хотя BASS_ErrorGetCode() выдает 0. подскажите куда копать? вроде...

Функция не возвращает false - C++
Вообщем str это строка, которая может содержать в себе знак математической операции, скобки, число (например 1, 5, 556, 33 ..) и т.д. ...

Перегрузка констант true и false - C++
помогите, а то не могу разобраться =(( перегрузка констант true и false: обращение к экземпляру класса дает значение true, если строка не...

Собственная функция true, false - C++
Приветствую, возникли проблемы с выполнением кода. Сначала показывал вроде правильно, потом я начал его исправлять, и вообще не показывает...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru