多个逻辑运算符|| (或)C中for循环的条件

时间:2016-11-11 13:39:02

标签: c loops logical-operators

我一周前开始学习C,并决定编写自己的tictactoe游戏进行练习。

我在主要

中有一个游戏循环
for(int i = 1; player1.isWinner!=1 || player2.isWinner!=1 || noWinner!=1; i++){...}

i - 计数转弯和游戏结束的条件是玩家赢了,或者没有人赢过(抽奖)。

现在只有在所有条件为1时才退出。

如何让它正常工作?

3 个答案:

答案 0 :(得分:2)

值是1,有人赢了吗?

如果是这样,那么你需要检查这些条件是否为真,如果不是则循环:

!(player1.isWinner==1 || player2.isWinner==1 || noWinner==1)

或使用AND,在没有设置时检查和循环:

(player1.isWinner!=1 && player2.isWinner!=1 && noWinner!=1)

答案 1 :(得分:1)

考虑将条件提取到一个名称很好的函数,以便提高可读性和可维护性:

int hasWinner(/*...*/) 
{  
    return player1.isWinner == 1 || player2.isWinner == 1 || noWinner == 1;
}

然后很明显条件应该是什么:

for(int i = 1; !hasWinner(/*...*/); i++){ /*...*/ }

答案 2 :(得分:1)

您似乎正在使用某种向后布尔逻辑。如果1表示布尔值true,则条件应为

!(player1.isWinner || player2.isWinner || noWinner)

这假设您在player1获胜时将player1.isWinner设置为1。

使用来自stdbool.h的值为booltrue的{​​{1}}可能会更容易。