我刚开始用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