Группировка логических связок в Rust
Скобки задают, какую часть выражения считают раньше. Без них действуют правила приоритета, со скобками автор явно показывает свой замысел.
Одни и те же значения с разной расстановкой скобок дают разный итог:
println!("{}", true || false && false);
println!("{}", (true || false) && false);
Первое выражение дает да: И между двумя
false считают раньше, чем Или с
true. Второе дает нет: сначала Или
дает да, затем И с последним false
обнуляет результат.
Скобки помогают и с отрицанием:
println!("{}", !true && false);
println!("{}", !(true && false));
Даны переменные:
let p = false;
let q = true;
let r = true;
Выведите (p || q) && r и
p || q && r.
Скажите, зачем ставят скобки в длинном логическом выражении.
Скажите результат !(false || true).