Логическое ИЛИ в Rust
Логическое ИЛИ требует выполнения хотя бы
одного условия. В Rust его пишут знаком ||.
Итог истинен, если хотя бы одна часть истинна.
Обе части ложны только тогда, когда каждая
из них ложна.
В следующем примере условие выполнится, если
переменная num1 больше 0 или
переменная num2 больше 0:
let num1 = 10;
let num2 = -5;
if num1 > 0 || num2 > 0 {
println!("Y"); // сработает это
} else {
println!("N");
}
Так удобно описывать несколько допустимых вариантов: подойдет любой из них. Порядок частей влияет только на читаемость, а не на смысл для простых сравнений.
Примем код, если он равен одному из двух чисел:
let code = 2;
if code == 1 || code == 2 {
println!("allow");
} else {
println!("deny");
}
При значении вне списка сработает вторая ветка:
let code = 9;
if code == 1 || code == 2 {
println!("allow");
} else {
println!("deny");
}
Связка && выполняется раньше ||.
В следующем примере условие истинно, если
num больше нуля и меньше 5 либо
больше 10 и меньше 20:
let num = 3;
if num > 0 && num < 5 || num > 10 && num < 20 {
println!("Y"); // сработает это
} else {
println!("N");
}
Круглые скобки собирают части в группы
и показывают порядок связок. Вокруг всего
условия после if их не ставят:
let num = 3;
if (num > 0 && num < 5) || (num > 10 && num < 20) {
println!("Y"); // сработает это
} else {
println!("N");
}
Группировку ставят и тогда, когда нужен свой порядок чтения, а не тот, который получается у связок сам.
Дано число:
let day = 6;
Выведите "rest", если day равно
6 или 7, иначе "work".
Дана строка:
let plan = "free";
Выведите "ok" при совпадении с "pro"
или "team", иначе "pay".
Скажите, будет ли истинной проверка с ||,
если левая часть уже истинна, а правая ложна.
Не запуская код, определите, что выведет программа:
let num1 = -10;
let num2 = -10;
if num1 >= 0 || num2 >= 0 {
println!("Y");
} else {
println!("N");
}
Не запуская код, определите, что выведет программа:
let num1 = 0;
let num2 = 0;
if num1 >= 0 || num2 >= 0 {
println!("Y");
} else {
println!("N");
}
Не запуская код, определите, что выведет программа:
let num1 = 0;
let num2 = 5;
if num1 >= 0 || num2 >= 0 {
println!("Y");
} else {
println!("N");
}
Не запуская код, определите, что выведет программа:
let num1 = 5;
let num2 = 5;
if num1 >= 0 || num2 >= 0 {
println!("Y");
} else {
println!("N");
}
Не запуская код, определите, что выведет программа:
let num1 = -5;
let num2 = 15;
if num1 >= 0 || num2 >= 0 {
println!("Y");
} else {
println!("N");
}
Не запуская код, определите, что выведет программа:
let num = 1;
if num == 0 || num == 1 {
println!("Y");
} else {
println!("N");
}
Не запуская код, определите, что выведет программа:
let num = 2;
if num == 0 || num == 1 {
println!("Y");
} else {
println!("N");
}
Не запуская код, определите, что выведет программа:
let num = 2;
if num == 0 || num == 1 || num == 2 {
println!("Y");
} else {
println!("N");
}
В приведенном коде укажите приоритет операций скобками:
let num = 3;
if num > 5 && num < 10 || num == 20 {
println!("Y");
} else {
println!("N");
}
В приведенном коде укажите приоритет операций скобками:
let num = 3;
if num > 5 || num > 0 && num < 3 {
println!("Y");
} else {
println!("N");
}
В приведенном коде укажите приоритет операций скобками:
let num = 3;
if num == 9 || num > 10 && num < 20 || num > 20 && num < 30 {
println!("Y");
} else {
println!("N");
}