Условные выражения

Последнее обновление: 28.02.2023

Условные выражения представляют собой некоторое условие и возвращают значение типа bool, то есть значение true (если условие истинно), или значение false (если условие ложно). К условным выражениям относятся операции сравнения и логические операции.

Операции сравнения

В операциях сравнения сравниваются два операнда, и возвращается значение типа bool - true, если выражение верно, и false, если выражение неверно.

  • ==

    сравнивает два операнда на равенство и возвращает true (если операнды равны) и false (если операнды не равны)

    int a = 10;
    int b = 4;
    bool c = a == b;    	// false
    bool d = a == 10;       // true
    
  • !=

    сравнивает два операнда и возвращает true, если операнды НЕ равны, и false, если операнды равны

    int a = 10;
    int b = 4;
    bool c = a != b;    	// true
    bool d = a != 10;       // false
    
  • < (меньше чем)

    Возвращает true, если первый операнд меньше второго, иначе возвращает false

    int a = 10;
    int b = 4;
    bool c = a < b; 	// false
    bool d = a < 23; // true
    
  • > (больше чем)

    Возвращает true, если первый операнд больше второго, иначе возвращает false

    int a = 10;
    int b = 4;
    bool c = a > b; 	// true
    bool d = a > 23; // false
    
  • >= (больше или равно)

    Возвращает true, если первый операнд больше второго или равен второму, иначе возвращает false

    bool c = 10 >= 10; 	// true
    bool b = 10 >= 4; 	// true
    bool d = 10 >= 20; 	// false
    
  • <= (меньше или равно)

    Возвращает true, если первый операнд меньше второго или равен второму, иначе возвращает false

    bool c = 10 <= 10; 	// true
    bool b = 10 <= 4; 	// false
    bool d = 10 <= 20; 	// true
    

Логические операции

Кроме того, в языке Dart есть логические операции, которые также представляют условие и возвращают true или false и обычно объединяют несколько операций сравнения. К логическим операциям относят следующие:

  • |

    c=a|b; (c равно true, если либо a, либо b (либо и a, и b) равны true, иначе c будет равно false)

  • &

    c=a&b; (c равно true, если и a, и b равны true, иначе c будет равно false)

  • !

    c=!b; (c равно true, если b равно false, иначе c будет равно false)

  • ^

    c=a^b; (c равно true, если либо a, либо b (но не одновременно) равны true, иначе c будет равно false)

  • ||

    c=a||b; (c равно true, если либо a, либо b (либо и a, и b) равны true, иначе c будет равно false)

  • &&

    c=a&&b; (c равно true, если и a, и b равны true, иначе c будет равно false)

Здесь у нас две пары операций | и || (а также & и &&) выполняют похожие действия, однако же они не равнозначны.

Выражение c=a|b; будет вычислять сначала оба значения - a и b и на их основе выводить результат.

В выражении же c=a||b; вначале будет вычисляться значение a, и если оно равно true, то вычисление значения b уже смысла не имеет, так как у нас в любом случае уже c будет равно true. Значение b будет вычисляться только в том случае, если a равно false

То же самое касается пары операций &/&&. В выражении c=a&b; будут вычисляться оба значения - a и b.

В выражении же c=a&&b; сначала будет вычисляться значение a, и если оно равно false, то вычисление значения b уже не имеет смысла, так как значение c в любом случае равно false. Значение b будет вычисляться только в том случае, если a равно true

Таким образом, операции || и && более удобны в вычислениях, позволяя сократить время на вычисление значения выражения и тем самым повышая производительность. А операции | и & больше подходят для выполнения поразрядных операций над числами.

Примеры:

bool a1 = (5 > 6) || (4 < 6); // 5 > 6 - false, 4 < 6 - true, поэтому возвращается true
bool a2 = (5 > 6) || (4 > 6); // 5 > 6 - false, 4 > 6 - false, поэтому возвращается false
bool a3 = (5 > 6) && (4 < 6); // 5 > 6 - false, 4 < 6 - true, поэтому возвращается false
bool a4 = (50 > 6) && (4 / 2 < 3); // 50 > 6 - true, 4/2 < 3 - true, поэтому возвращается true
bool a5 = (5 > 6) ^ (4 < 6); // 5 > 6 - false, 4 < 6 - true, поэтому возвращается true
bool a6 = (50 > 6) ^ (4 / 2 < 3); // 50 > 6 - true, 4/2 < 3 - true, поэтому возвращается false
Дополнительные материалы
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850