В настоящее время я работаю над небольшим личным проектом, чтобы помочь себе узнать о кодировании. Я хотел бы узнать в будущем, смогу ли я объединить логические операторы разных типов в одном операторе 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, оба они ложны. Я обнаружил, что скобки на самом деле имеют значение, но я не могу понять, почему он действует так, как есть.