c++ - 如何修复 '==' 操作数中比较的建议括号

标签 c++ warnings qt-creator compiler-warnings parentheses

我有这样的代码

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]。括号中的部分是 truefalse,它被隐式转换为 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/

相关文章:

c++ - QT 概述/教程?

c++ - 如何在基于 MFC 对话框的应用程序中使用计时器?

php - 调用 mysql_insert_id 给出警告

php - 引用 - 这个错误在 PHP 中意味着什么?

c++ - 信号未在此范围内声明/未定义对 class::method 的引用

c++返回已删除对象的方法

c++ - 内部编译器错误 : segmentation fault with g++4. 3.5

java - 检测 Chrome 插件警告

c++ - QT 获取 DateTime 的 jpeg exif 元数据

qt - Qt Creator 中没有资源文件