【发布时间】:2020-02-26 01:28:58
【问题描述】:
目前我正在做一个小小的个人项目来帮助自己学习编码。 我想知道是否可以在单个 if 语句中组合不同类型的逻辑运算符以供将来参考。
例如,如果我有
if (n == 0 || n == 1 && m == 0 || m == 1) {
doSomething();
}
它会检查左侧的任一部分是否为真,然后右侧的任一部分是否为真,还是会类似于检查中间的两个部分是否为真?
使用括号会改变什么吗 例如
if ((n == 0 || n == 1) && (m == 0 || m == 1)) {
doSomething();
}
编辑: 根据一个建议,我尝试了它,但是当我输入三个变量时,它开始表现得很奇怪 这是我的测试:
int n = 1;
int m = 1;
int o = 1;
if (n == 0 || n == 1 && m == 0 || m == 1 && o == 0 || o == 1) {
System.out.println("True");
}
else {
System.out.println("False");
}
if ((n == 0 || n == 1) && (m == 0 || m == 1) && (o == 0 || o == 1)) {
System.out.println("True");
}
else {
System.out.println("False");
}
如果它们都是 1 或 0,则它们都评估为 true,如果 n 或 m 不是 1 或 0,则顶部评估为 true,但底部不评估。
但是,如果 o 不是 0 或 1,它们都是假的。 我发现括号确实会产生影响,但我不能完全说明为什么它会这样。
【问题讨论】:
-
为什么不简单地编写一个小程序来测试结果——创建自己的“真值表”?
-
接下来,一个有用又实用的学习工具就是维恩图,它也会给你带来问题的正确答案
-
使用方括号来明确您的意图。 6 个月后它会更容易理解。
-
为什么不直接查一下语言规范?
标签: java if-statement logical-operators operator-precedence