我刚开始用C编写一个游戏编程入门指南教程,我对下面的代码有点困惑。
在主游戏中,overtick设置为零,然后当游戏结束时我们有一个案例

case GAME_OVER:
    printStatus("GAME OVER!!! The evil DarkLord was defeated");
    if (++gameOverTick % 100 == 0){
        status = PRINT_GAME_WELCOMESCREEN;  // go back to welcome screen
        gameOverTick = 0;           // reset gameOverTick
    }

我只想知道++(pre inc)操作在gameOverTick上扮演什么角色。是否在检查if时将gameOverTick设置为1,或者以某种方式将其设置为0。我知道post inc++是如何工作的,但这对我来说是一个新的。
谢谢

最佳答案

在if的括号内编写的代码称为表达式,考虑到给定的表达式,表达式求值始终遵循运算符优先规则
1.++运算符具有最高优先级,因此“++gameOverTick”首先计算为“(gameOverTick=gameOverTick+1)”
2.下一个优先级是“%”运算符,因此(gameOverTick+1)%100'将被计算
3.最后,最小优先级运算符是“==”,因此将在“==”运算符左侧获得的结果与右侧值进行比较,以确保相等。
例子:
-将gameOverTick值视为99
-99先递增,即99+1=100
-然后执行%操作,即100%100=0
-现在比较等式,即0==0,等于1
-表达式的计算结果为1,因此它等于if(1),表示为true。
有关运算符优先级的详细信息,请参阅此链接
http://www.difranco.net/compsci/C_Operator_Precedence_Table.htm

10-02 02:50