Можно использовать
for i in $(seq $END); do echo $i; done
Измените первое false на true. Я знаю, что это глупо иметь (правда || правда), но это доказывает вашу точку зрения.
bool result = true || true && false; // --> true
result = (true || true) && false; // --> false
result = true || (true && false); // --> true
Если вы действительно хотите напугать его, попробуйте:
bool result = True() | False() && False();
Console.WriteLine("-----");
Console.WriteLine(result);
static bool True()
{
Console.WriteLine(true);
return true;
}
static bool False()
{
Console.WriteLine(false);
return false;
}
Это напечатает:
True
False
False
-----
False
В ответ на комментарий :
В C # |
- это логический оператор, который выполняет ту же логическую логику, что и ||
, но не замыкается. Также в C # оператор |
имеет более высокий приоритет, чем оба ||
и &&
.
Распечатав значения, вы увидите, что если бы я использовал типичный оператор ||
, был бы напечатан только первый True
, за которым следует результат выражения, которое также было бы Истинно
.
Но из-за более высокого приоритета |
, Истина | Сначала оценивается значение false
(в результате получается true
) и , затем , в результате получается &&
ed с false
для получения false
.
Я не пытался показать порядок оценки,
Разве это не даст вам то, что вам нужно? Или, может быть, мне что-то не хватает ...
bool result = true || false && false;
Вы доказываете это не кодом, а логикой. И - это логическое умножение, а ИЛИ - логическое сложение. Какой из них имеет более высокий приоритет?
ложь || истина && истина
Вывод: истина
ложь && истина || true
Результат: true
Вы не можете просто показать конечный результат, когда ваши логические выражения сокращаются. Вот отрывок, который решает ваше дело.
Он полагается на реализацию & и | операторы, используемые && и ||, как указано в MSDN 7.11 Условные логические операторы
public static void Test()
{
B t = new B(true);
B f = new B(false);
B result = f || t && f;
Console.WriteLine("-----");
Console.WriteLine(result);
}
public class B {
bool val;
public B(bool val) { this.val = val; }
public static bool operator true(B b) { return b.val; }
public static bool operator false(B b) { return !b.val; }
public static B operator &(B lhs, B rhs) {
Console.WriteLine(lhs.ToString() + " & " + rhs.ToString());
return new B(lhs.val & rhs.val);
}
public static B operator |(B lhs, B rhs) {
Console.WriteLine(lhs.ToString() + " | " + rhs.ToString());
return new B(lhs.val | rhs.val);
}
public override string ToString() {
return val.ToString();
}
}
Вывод должен показать, что && вычисляется первым перед ||.
True & False
False | False
-----
False
Для дополнительного развлечения попробуйте его с result = t || t && f и посмотрим, что происходит при коротком замыкании.