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