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

Корректно ли использовать goto? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти медианы на всех префиксах последовательности X длины n и вывести их сумму http://www.cyberforum.ru/cpp-beginners/thread1242172.html
В этой задаче необходимо найти медианы на всех префиксах последовательности X длины n и вывести их сумму. Медианой последовательности из нечетного (k = 2 ⋅ l + 1) количества элементов будем называть элемент, который стоял бы на (l + 1)-ом месте, если эту последовательность отсортировать. Медианой последовательности из четного (k = 2 ⋅ l) количества элементов будем называть элемент, который...
C++ Требуется идентификатор, исправить ошибки Помогите, пожалуйста, исправить ошибки. class rus_codecvt : public std::codecvt<char, char, std::mbstate_t> { protected: virtual result do_in(std::mbstate_t&, const char* from, const char* from_end, const char*& from_next, char* to, char* to_limit, char*& to_next ) const { const int i = std::min(to_limit - to, from_end - from); OemToCharBuff(from, to, i); from_next = from +... http://www.cyberforum.ru/cpp-beginners/thread1242149.html
C++ Написать небольшую прогу, которая понимает изменился ли бинарный файл или нет
Мне нужно написать небольшую прогу, которая понимает изменился ли бинарный файл или нет. #include <windows.h> #include <string> #include <iostream> #include <fstream> int main(int agrc, char** argv) { std::string fileName = "C:/GameDev/Safty Code challenger/OriginalFiles/house_24.bin"; HFILE hFile;
C++ Приостановить выполнение цикла до совершения какого-то действия
Я пишу дурака. Нужно, чтобы действия походить, отбиться, подкинуть и т.д. происходили до того момента, пока кол-во карт в отбое не будет равно 36. Проблема в том, что программа зацикливается на этом моменте:do { Go(); Defence(); Throw_Card(); //... } while (retreat.Count < 36); я хочу на время приостановить выполнение этого цикла, пока количество карт,...
C++ Порекомендуйте библиотеку для работы с большими числами http://www.cyberforum.ru/cpp-beginners/thread1241958.html
Добрый день. Нужна библиотека для работы с большими числами, в которой определены следующие операции: умножение, деление, разность, сумма, деление с остатком. Какую библиотеку можете порекомендовать?
C++ Конвертирование из std::tcstring в TCHAR Всем привет! Нужно перевести строку из std::tcstring в TCHAR. Как то сделать? пробовал через функцию .c_str() - не помогло подробнее

Показать сообщение отдельно
gru74ik
Модератор
 Аватар для gru74ik
3116 / 1342 / 167
Регистрация: 20.02.2013
Сообщений: 3,809
Записей в блоге: 17
14.08.2014, 09:49     Корректно ли использовать goto?
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
не нормально в любой вариации, забудьте об этом опреаторе
Страуструп считает иначе:
Цитата Сообщение от Бьярне Страуструп
"Язык Программирования С++" (2011, специальное издание):

6.3.4. Оператор goto
Оператор goto полезен в ряде случаев и в обычном высокоуровневом
программировании, но он особо полезен, когда программу создает не человек, а другая
программа: например, при автоматической генерации парсера на базе формальной
грамматики. Также goto полезен для программ реального времени, когда нужно
с высокой эффективностью реализовать выход из внутреннего цикла.
Причём, он не изменил своей позиции и по сию пору:
Цитата Сообщение от Bjarne Stroustrup
The C++ Programming Language (2013, Fourth Edition):

9.6 goto Statements
C++ possesses the infamous goto:

goto identifier ;
identifier : statement

The goto has few uses in general high-level programming, but it can be very useful when C++ code
is generated by a program rather than written directly by a person; for example, gotos can be used
in a parser generated from a grammar by a parser generator.
The scope of a label is the function it is in (§6.3.4). This implies that you can use goto to jump
both into and out of blocks. The only restriction is that you cannot jump past an initializer or into
an exception handler (§13.5).
One of the few sensible uses of goto in ordinary code is to break out from a nested loop or
switch -statement (a break breaks out of only the innermost enclosing loop or switch -statement). For
example:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void do_something(int i, int j)
    // do something to a two-dimensional matrix called mn
{
    for (i = 0; i!=n; ++i)
        for (j = 0; j!=m; ++j)
            if (nm[i][j] == a)
                goto found;
    // not found
    // ...
found:
    // nm[i][j] == a
}
Note that this goto just jumps forward to exit its loop. It does not introduce a new loop or enter a
new scope. That makes it the least troublesome and least confusing use of a goto.
 
Текущее время: 06:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru