Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 1
Регистрация: 18.08.2014
Сообщений: 31
1

Не понять как работает код

09.11.2014, 15:37. Показов 461. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
    int i = 0;
    for (;;)
    {
        i = 0;
        while (GetAsyncKeyState(0x30))
        {
            if (i == 0)
            {
                cout << "key pressed" << endl;
            }
            Sleep(2000);
            i += 1;
            cout << i << endl;
        }
    }
}
Я нажимаю "0" и у меня, как и должно быть, печатается количество нажатий этой клавиши.Но когда я нажимаю "0" 3 раза то у меня выводится цифра "2" т.е. как будто я нажал эту клавишу 2 раза....или если я нажму сколько угодно раз "0", до того как закончится выполнение "Sleep(2000);" то у меня всё равно выводится цифра 2.
У меня возник вопрос:

Почему печатается 2 раза, а не 1, ведь я нажимаю "0" во время выполнения цикла while,по идее ничего не должно происходить....?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2014, 15:37
Ответы с готовыми решениями:

Не могу понять как работает этот код в деталях
dg1-&gt;Rows-&gt;Clear();//Очищяет в датагриде строки ifstream infile...

Не могу понять почему код не работает так, как нужно. При выводе weight не выполняется функция void eat(float how_much)
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class Worker { private: float...

Как понять код?
этот код запускается , но как понять что он именно выполняет? может быть кто ни будь...

как понять код?
#include &lt;string.h&gt; int main() { char str = &quot;abcdef&quot;; int slen = strlen(str); ...

4
7793 / 6560 / 2984
Регистрация: 14.04.2014
Сообщений: 28,672
09.11.2014, 16:00 2
Ты прочитал как функция работает? Она показывает нажата ли клавиша в момент обращения, у тебя задержка 2000, за это время можно сколько угодно нажимать, ничего не будет.
И условие должно быть
C++
1
while (GetAsyncKeyState(0x30) & 0x8000)
0
0 / 0 / 1
Регистрация: 18.08.2014
Сообщений: 31
09.11.2014, 16:37  [ТС] 3
nmcf,
Цитата Сообщение от nmcf Посмотреть сообщение
за это время можно сколько угодно нажимать, ничего не будет
ну так и должно быть но у меня показывает что я нажал 2 раза (хотя я нажимал много раз при задержки в 2 сек.) по идее должно показать что я 1 раз нажал...что за

Добавлено через 13 минут
а с 0x8000 всё нормально
видимо без 0x8000 функция проверят 2 положения клавиши, поэтому и выводит что она нажата 2 раза
0
7793 / 6560 / 2984
Регистрация: 14.04.2014
Сообщений: 28,672
09.11.2014, 17:03 4
Там есть какая-то древняя особенность. Поэтому надо с 0x8000.
0
0 / 0 / 1
Регистрация: 18.08.2014
Сообщений: 31
09.11.2014, 17:21  [ТС] 5
nmcf, понятно
0
09.11.2014, 17:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2014, 17:21
Помогаю со студенческими работами здесь

Не могу понять, как работает программа
Здравствуйте, непонятны некоторые функции программы. Спасибо. #include &lt;iostream&gt; #include...

Не могу понять как работает программа
Здравствуйте люди.Помогите понять как работают фнкции в программе(см. ниже). Учусь по книге Стефана...

Как понять нормальный у тебя код или нет?
Сейчас в процессе изучения C++ столкнулась с тем, что подсматриваю в интернете кто и как выполняет...

Массивы. Не могу понять как работает программа
Здравствуйте. Я как и многие в этом разделе новичок. У меня возникли трудности в понимании данной...

Не могу понять, как работает побитовый сдвиг
Есть вот такой код: int invar, wv1, wv2, et, yt, resv; invar = 14; wv1 = invar &gt;&gt; 4;...

Хочу понять как работает str.insert
Смотрел на разных форумах, разделах, много чего для меня непонятного. Помогите пожалуйста...


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

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