if(location[0] <= 'H' || location[0] >= 'A'
&& location[1] <= 8 || location[1] >= 1)
我正在检查第一个索引是否在“A”和“H”之间,第二个索引是否在 1 - 8 之间。
所以如果用户输入 { A, 1 } 则参数 = 1 -1 如果用户输入 { J, 1 }
最佳答案
And (&&
) 比 or (||
) 有更高的优先级,所以要表达你想要的你需要:
if ((location[0] <= 'H' || location[0] >= 'A') && (location[1] <= 8 || location[1] >= 1))
否则发生的事情是它做的是这样的:
if (location[0] <= 'H' || (location[0] >= 'A' && location[1] <= 8) || location[1] >= 1)
这显然不是您想要的。
你可以在条件中放入任意多个表达式,但你必须记住优先规则;为了清楚起见,我建议始终使用额外的括号。
正如 Jeremiah 在评论中指出的那样,条件仍然不会执行您想要的操作——您通过检查是否或者小于上限或大于下限(涵盖所有输入),当您打算检查输入是否均大于下限且小于上限时:
if (location[0] <= 'H' && location[0] >= 'A' && location[1] <= 8 && location[1] >= 1)
在这种情况下,由于运算符都是 &&
,因此不需要额外的括号,但您可以添加它们以更加清晰。
关于c++ - 我的逻辑有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5136465/