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

Вечный цикл - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.73
Капитан Техно
 Аватар для Капитан Техно
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 32
18.07.2011, 11:07     Вечный цикл #1
является ли этот цикл зацикленным(вечным)?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while(1){  
     
        for(i=8;i<=190;i++){
        
        if (GetAsyncKeyState(i) == -32767)
         
        {
        
           
          keys (i,test);
           
           
     
        }
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.07.2011, 11:10     Вечный цикл #2
Капитан Техно, Да) while(1) априори зацикленный. А вот выход зависит от того что делает функция keys и что вернет GetAsyncKeyState().
Капитан Техно
 Аватар для Капитан Техно
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 32
18.07.2011, 11:10  [ТС]     Вечный цикл #3
спасибо) очень приятные люди сидят на форуме, с меня +
co6ak
18.07.2011, 11:11
  #4

Не по теме:

не в тему конечно, но тем не менее. почему в тегах [цпп] допустим, 1 похоже на l ?

Капитан Техно
 Аватар для Капитан Техно
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 32
18.07.2011, 11:18  [ТС]     Вечный цикл #5
у меня в редакторе тоже 1 похожа на l
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
18.07.2011, 11:22     Вечный цикл #6
вот именно по этому всегда делаю вечный цикл только как while(true)
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.07.2011, 11:29     Вечный цикл #7
Цитата Сообщение от co6ak Посмотреть сообщение
всегда делаю вечный цикл только как while(true
Я тоже, но трудностей с прочтением однёрки не испытываю. На l она не похожа, но:
1. Когда при наборе имеешь ввиду true, то быстрее набрать именно true, чем вспоминать, что на этом языке true это всё, что не ноль, а потом этот не ноль ещё и выбирать. 1 true? Эйси. 10 тоже true.
2. При чтении быстрее будет прочитать true, чем вспоминать, что на этом языке true это всё, что не ноль, а потом ещё сравнивать.
Оптимизация работы мозга - тоже оптимизация, а заключается в том числе в выборе удобных идентификаторов.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
18.07.2011, 13:32     Вечный цикл #8
Цитата Сообщение от taras atavin Посмотреть сообщение
Оптимизация работы мозга - тоже оптимизация
Слышали про устойчивые выражения? Так вот, в ЯП они тоже существуют. В С/С++ while (1) - как раз такое выражение. Прелесть устойчивых выражений в том, что не надо напрягать мозг для того, чтобы их осмыслить.
Я тоже использую while (true), когда пишу на С++. Однако в чистом С никаких булевых типов не было, там и выбора не было и приходилось писать while (1). И никого это не смущало.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
18.07.2011, 13:37     Вечный цикл #9
Именно поэтому не рекомендуется использовать букву 'l' в качестве имени переменной, а не наоборот, то есть не использовать 1 (единицу) в качестве числа, согласитесь это было бы глупо.
Например,
C++
1
2
for (i = l; i < n; ++i) {
}
C++
1
2
for (i = 1; i < n; ++i) {
}
Первый пример плохой, во втором ничего плохого нет (по другому никак и не сделаешь).

Не по теме:

А вообще в редакторах обычно числа и имена переменных подсвечиваются разным цветом.

easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
18.07.2011, 14:04     Вечный цикл #10
Цитата Сообщение от Капитан Техно Посмотреть сообщение
у меня в редакторе тоже 1 похожа на l
пишите
C
1
2
3
for (;;){
/*...*/
}
не ошибётесь!
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.07.2011, 06:11     Вечный цикл #11
Цитата Сообщение от silent_1991 Посмотреть сообщение
Однако в чистом С никаких булевых типов не было
А препроцесор?
C
1
2
#define false 0
#define true 1
. Всё. И пиши себе как на плюсах.

Добавлено через 3 минуты
Цитата Сообщение от fasked Посмотреть сообщение
Первый пример плохой, во втором ничего плохого нет (по другому никак и не сделаешь).
Ну лови наглядное пособие, как делать не надо:
C++
1
2
3
4
5
6
int l=0;
++l;
for (i=l; i<n; ++i)
{
 ...
}
. Будешь оспаривать, что я по другому сделал?
silent_1991
19.07.2011, 10:04
  #12

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
Будешь оспаривать, что я по другому сделал?
Ага, вы ещё класс One для этой цели напишите...

ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
19.07.2011, 10:09     Вечный цикл #13
тогда лучше писать while(-1)...
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
19.07.2011, 10:12     Вечный цикл #14
ValeryLaptev, думаю, правильнее всего в таком случае
C++
1
2
while (!0)
    ...
Добавлено через 38 секунд

Не по теме:

Про 0 уже не скажешь, что она на O похожа

fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
19.07.2011, 10:52     Вечный цикл #15
Цитата Сообщение от taras atavin Посмотреть сообщение
Будешь оспаривать, что я по другому сделал?
Суть моего сообщения была в том, что плохо использовать l в качестве имени переменной, а не в чем-то другом. А Вы вообще непонятно что хотели доказать этим, Вам лишь бы поспорить.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
19.07.2011, 11:33     Вечный цикл #16
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
тогда лучше писать while(-1)...
C
1
while ( EOF )

или вот так ешё
C
1
while ( ~0 )
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.07.2011, 19:12     Вечный цикл #17
Цитата Сообщение от fasked Посмотреть сообщение
А Вы вообще непонятно что хотели доказать этим, Вам лишь бы поспорить.
Я имел ввиду, что по-другому как раз можно, но не нужно. А специально для любителей путать символы первая, или отдельная L у меня всегда большая, а в других позициях вместо неё не может быть 1.

Добавлено через 6 минут
C++
1
Ladle
уже нельзя перепутать ни с
C++
1
1adle
, ни с
C++
1
Lad1e
, ни с
C++
1
1ad1e
.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.07.2011, 13:14     Вечный цикл #18
Случайно в голову пришло, когда читал другую тему. Изврат конечно, но новичкам полезно будет:
C++
1
for(char i=0;i<128;i++); //вечный цикл
castaway
Эксперт С++
4846 / 2985 / 368
Регистрация: 10.11.2010
Сообщений: 11,026
Записей в блоге: 10
Завершенные тесты: 1
21.07.2011, 13:24     Вечный цикл #19
Kastaneda, это с какой-такой стати он вечный?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2011, 13:27     Вечный цикл
Еще ссылки по теме:

Вечный календарь ошибка компиляции C++
C++ Почему цикл на при 1 уходит в бесконечный цикл?
Задание на цикл с параметром и цикл с постусловием C++

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

Или воспользуйтесь поиском по форуму:
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.07.2011, 13:27     Вечный цикл #20
lazybiz, попробуй сам разобраться!
Yandex
Объявления
21.07.2011, 13:27     Вечный цикл
Ответ Создать тему
Опции темы

Текущее время: 01:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru