簡體   English   中英

C ++多重邏輯運算符

[英]C++ Multiple Logical Operator

我是C / C ++的新手。 我的應用程序的某個部分似乎無法正常運行,但我不明白為什么。

我想做的是當4鍵處於按下狀態時,我希望它執行“空閑”功能。 我希望空閑函數有2個結果。 如果向上或向下或向左或向右或LMouse和RButton然后執行“運動旋轉操作”代碼,否則只需執行標准的空閑功能。 但是在我的代碼中,它會在關閉時循環循環,但是move()只會返回0

我已經弄亂了一段時間,試圖在google上尋找答案,但我不明白為什么。

這是我的代碼段:

int moving()
{
    int u = GetAsyncKeyState(VK_UP);
    int d = GetAsyncKeyState(VK_DOWN);
    int l = GetAsyncKeyState(VK_LEFT);
    int r = GetAsyncKeyState(VK_RIGHT);
    int mr = GetAsyncKeyState(VK_RBUTTON);
    int ml = GetAsyncKeyState(VK_LBUTTON);
    if(u == 1 || d == 1 || l == 1 || r == 1 || mr == 1 && ml == 1)
    {
        return 1;
    }
}

void idle()
{
    cout << "moving = " << moving() << endl;
    if(moving() == 1)
    {
        cout << "Movement rotation operating." << endl;
    }
    else
    {
        cout << "This is the idle statement" << endl;
    }

}

int main()
{
    while(1)
    {
    if(GetAsyncKeyState('4'))
        {
            cout << "4 Pressed" << endl;
            idle();
        }
    }
}

先感謝您。

確定按鈕組合的邏輯需要額外的括號。

if(u == 1 || d == 1 || l == 1 || r == 1 || (mr == 1 && ml == 1))

此外, 1計算結果為true因此您可以說

if(u || d || l || r || (mr && ml))

您還可以使函數返回bool因為這實際上是您要執行的操作。

bool moving()
{
    // ...
    // code for getting button states
    // ...
    return (u || d || l || r || (mr && ml))
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM