Оператор логического ИЛИ | Оператор | вычисляет логическое ИЛИ для всех своих операндов. Результат операции x | y принимает значение true, если хотя бы один из операторов x или y имеет значение true. В противном случае результат будет false. Оператор | вычисляет оба операнда, даже если левый операнд имеет значение true и результат должен принять значение true, независимо от значения правого операнда.
Условный оператор логического ИЛИ || Условный оператор логического ИЛИ || (оператор короткого замыкания) вычисляет логическое ИЛИ для своих операндов. Результат операции x || y принимает значение true, если хотя бы один из операторов x или y имеет значение true. В противном случае результат будет false. Если x имеет значение true, y не вычисляется.
Дело в том, что оператор && имеет больший приоритет, чем ||, но меньший, чем |. Таким образом во втором случае условие замыкается на a > 10, что равно false.
Дело в том, что оператор && имеет больший приоритет, чем ||, но меньший, чем |. Таким образом во втором случае условие замыкается на a > 10, что равно false.