我有这样的代码
if (config_atual[6]==config_atual[7]==config_atual[8] ||
config_atual[1]==config_atual[4]==config_atual[7] ||
config_atual[2]==config_atual[4]==config_atual[6])
{
if (config_atual[7]=='X')
cout << "O Jogador ganhou!" << endl;
else if (config_atual[7]=='O')
cout << "O Computador ganhou!" << endl;
}
关于井字游戏,每当我尝试编译这行代码时,它会验证三个获胜条件(假设第一行索引为 0、1、2,第二行索引为 3、4、5,然后最后是 6、7、8)我收到此警告:
suggest parentheses around comparison in operand of '==' [-Wparentheses]
我不明白。我做错了什么,config_atual
是一个包含棋盘当前配置的字符数组。
此警告是什么意思,我该如何更正它?
最佳答案
表达式config_atual[6]==config_atual[7]==config_atual[8]
被分组为(config_atual[6]==config_atual[ 7])==config_atual[8]
。括号中的部分是 true
或 false
,它被隐式转换为 int
类型(或 config_atual[8] 的类型
是在第二次比较之前比 int
) 更宽;即 config_atual[8]=={1, 0}
,其中我使用了 {}
中的内容来指示可能性。那可能以false
结束。
有时,以这种方式链接 ==
很有用。但在您的情况下不是,您需要以不同的方式编写表达式;
config_atual[6]==config_atual[7] && config_atual[7]==config_atual[8]
就是这样一种方式。
关于c++ - 如何修复 '==' 操作数中比较的建议括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56046331/