如何解决‘==操作数中比较需加括号’[-Wparentheses]警告?
问题原因及解决办法
你遇到的警告是因为C语言里==运算符的结合性导致的——==是左结合,所以你写的a == b == c实际会被解释成(a == b) == c。举个例子,假设board[0][0]和board[0][1]都是5,那board[0][0] == board[0][1]会返回1(真),接着拿1和board[0][2]比较,这显然和你想判断“三个元素全部相等”的逻辑完全不符,编译器就是在提醒你这个写法存在逻辑歧义。
修正方法很简单,用逻辑与&&把两个相等判断分开,明确表达“前两个相等,且后两个也相等”:
if (board[0][0] == board[0][1] && board[0][1] == board[0][2]) { return 1; } if (board[1][0] == board[1][1] && board[1][1] == board[1][2]) { return 2; } if (board[2][0] == board[2][1] && board[2][1] == board[2][2]) { return 3; }
这样写既符合你“三个元素相等”的需求,也能消除编译器的警告。
内容的提问来源于stack exchange,提问作者code_breaker_zero
相关产品推荐
相关产品推荐

