Имеет ли смысл использование скобок при использовании && или ||?

Один предпочтительнее другого? Если так, то почему?

 int value1 = 1;
 int value2 = 2;

 if (value1 == 1 && value2 == 2) {
    System.out.println("works");
    }

 if ((value1 == 1) && (value2 == 2)) {
    System.out.println("works");
    }

Ожидаемые совпадения с реальными результатами. Оба печатают строку "работает"

2 ответа

Решение

Скобки полезны для группировки ваших логических выражений так же, как в математических выражениях.

Это делает порядок приоритета более понятным.

В этом случае они не нужны, так как вы работаете только с 2 выражениями.

Но что происходит в аналогичном случае, используя оба OR а также AND?

Это может привести к неоднозначному случаю:

if (a && b || c)

Будет интерпретироваться как:

if ((a && b) || c)

Когда вы хотели, чтобы выражение было обработано как:

if (a && (b || c))    

Нет, это абсолютно то же самое. Потому что 1 && ... не является допустимым выражением, и поэтому оно будет читаться так, как вы установили скобки.

Другие вопросы по тегам