Форум программистов, компьютерный форум 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() - не помогло подробнее

Показать сообщение отдельно
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
14.08.2014, 08:37     Корректно ли использовать goto?
goto иногда бывает очень полезным. Например в OpenJDK интерпретатор построен на goto (если используется gcc). В gcc есть фича взятия адреса метки и обработка байткода там построена так

C++
1
2
3
iload_0: // iload_0 это java байткод
    // какой-то код
    goto next_bytecode;
а если используется не gcc, то логика построена так
C++
1
2
3
4
5
6
7
8
9
10
11
while(true) {
    switch (bytecode) {
    case iload_0:
        // ...
        break;
    case iload_1:
        // ...
        break;
    //etc
    }
}
Т.е. без goto для обработки одного байткода делается 2 прыжка - по switch'у в нужный case и потом из case'а в начало switch'а. А с goto только один прыжок - сразу на следующий байткод. Минус один прыжок для обработки каждого байткода - это большая оптимизация.
 
Текущее время: 03:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru