Зациклить программу

Помогите разобраться с циклом. Есть программа, которая отнимает 1 от переменной s, когда пользователь нажимает PAGE UP. Проблема в том, что не могу зациклить программу, чтобы 1 отнималось пока 500 не станет 0. Думаю, что для решения подойдет цикл do .. while, но никак не могу понять его логику. Буду благодарен любой помощи. P.S. чтобы число отнималось каждый раз, когда пользователь нажимает PAGE UP.

Код:

    #include <iostream>
#include <string>
#include <Windows.h>
#include <conio.h>


using namespace std;

int main()
{
    int r, s = 500;
    char ch;
    while (true)
    
   do {
       // if (_kbhit())
            if (GetAsyncKeyState(VK_PRIOR))
            {
                r = s - 1;
                std::cout << r;
                return r;
            }
    
   } while (r=s-1);

    return 0;

}

Ответы (1 шт):

Автор решения: Pavel Chernitsyn

Не до конца понятно зачем вам do-while внутри while? Если вы хотите, чтобы цикл не кончался, пока s != 0, достаточного одного while. Также не понятно зачем вы делаете return внутри while, если не хотите, чтобы цикл закончился. Также, чтобы проверить переменную на равенство, нужно исспользовать "==". Вы же каждый раз присваиваете r = s - 1 внутри условия цикла. Думаю, вы это имели ввиду:

int main()
{
    int s = 500;
    while (s != 0)
    {
        if (_kbhit())
            if (GetAsyncKeyState(VK_PRIOR))
            {
                --s;
                std::cout << s;
            }
    }

    return 0;

}
→ Ссылка