簡體   English   中英

% 在 rand() C++ 后不起作用

[英]% doesn't work after rand() c++

我必須在此代碼中使用 fmod 函數而不是 % :

int prob = rand();// % 4;
    prob = fmod(prob,4);
    if (prob == 0) {
        shoot = true;
    }
    else shoot = false;

如果我使用 %, prob 變量,它在調試器上不會得到任何值。

第二個問題是它永遠不會進入 if,我把斷點放在 if 上,另一個放在 else 上,其他放在 shot = true 上; 調試器說:當前不會命中斷點。 沒有關聯調試器目標代碼類型的可執行代碼。

在其他計算機上,第二個問題不存在。

全功能:

void cVoladorEstatico::Logic(int *map)
{

    double t1 = glutGet(GLUT_ELAPSED_TIME);
    if (t1 - moveDelaySteering > 20 * 20) {
        random_variable = rand();
        moveDelaySteering = t1;
    }
    if (t1 - moveDelay > 20) {
        int aux = y;

        y += random_variable%speed - 3;

        //Whats next tile?
        if ((y % TILE_SIZE) <= 1)
        {

            /*y += speedY;
            x += speedX;*/
            //si choca con tile, se autodestruye muy fuerte
            if (CollidesMapWall(map, false)) y = aux; //delete this;
        }
        //Advance, no problem
        else
        {
            /*y += speedY;
            x += speedX;*/
            //TODO: si choca, hace magia
        }
        moveDelay = t1;
    }
    //should i shoot
    //if (t1 - lastShootDec > shootChance) {
    int prob = rand();// % 4;
    prob = fmod(prob,4);
    if (prob == 0) {
        shoot = true;
    }
    else shoot = false;
    //}
}

原始代碼應該可以正常工作。 很有可能調試器沒有告訴你真相。 任何好的優化器都會跳過將值存儲到prob ,因為它用於if語句的條件中。 所以在計算prob后寫出這個值,看看發生了什么。

暫無
暫無

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

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