Dig*_*eep 0 c increment pre-increment
我刚刚开始在C中开始游戏编程教程的初学者指南.我对下面的代码有点困惑.
在主游戏的TimeTick设置为零,然后我们有一个游戏结束的情况
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
}
Run Code Online (Sandbox Code Playgroud)
我想知道++(pre-inc)操作在gameOverTick上扮演什么角色.它在检查if时将gameOverTick设置为1,或者以某种方式将其设置为0.我知道post-inc ++是如何工作的,但对我来说这是一个新的.
谢谢
Eri*_*ert 12
我们在这里得到了四个答案,但它们都以同样的方式出错了.让我确保你的想法非常清楚:告诉你运算符优先级的人决定了由于计算子表达式而产生的副作用的顺序是完全错误的.在C中,计算子表达式的顺序不受优先级控制; 它很大程度上是未定义的.(在C#和Java中,定义不是优先顺序,而是从左到右.)
在此特定情况下,该值的的++操作必须计算之前%发生,但分配与相关的++操作可以发生在任何时间.在您的特定情况下,当分配情况也不要紧,但很容易构造情况下,它确实事.