Условный оператор

редактировать
Найдите Условный оператор в Wiktionary, бесплатном словарь.

Условный оператор поддерживается во многих языках программирования. Этот термин обычно относится к ?:как в C, C ++, C #, Python и JavaScript. Однако в Java этот термин может также относиться к и ||.

Содержание
  • 1 и ||
    • 1.1 Отличие от побитового оператора
    • 1.2 Использование в Java
  • 2 ?
    • 2.1 Регулярное использование «?:»
      • 2.1.1 Синтаксис
      • 2.1.2 Свойство ассоциации
      • 2.1.3 Примеры по языкам
        • 2.1.3.1 Java
        • 2.1.3.2 C ++
        • 2.1.3.3 C #
        • 2.1.3.4 JavaScript
    • 2.2 Специальное использование в условной цепочке
      • 2.2.1 Примеры по языкам
        • 2.2.1.1 JavaScript
        • 2.2.1.2 C / C ++
    • 2.3 Специальное использование в выражении присваивания
      • 2.3.1 C / C ++
  • 3 См. Также
  • 4 Ссылки
и ||

В некоторых языках программирования, например В Java термин условный оператор относится к логическим операторам короткого замыкания и ||. Второе выражение оценивается только тогда, когда первого выражения недостаточно для определения значения всего выражения.

Отличие от побитового оператора

и |- это побитовые операторы, что встречается во многих языках программирования. Основное отличие состоит в том, что поразрядные операции работают с отдельными битами двоичного числа, тогда как условные операторы работают с логическими операциями. Кроме того, всегда будут оцениваться выражения до и после побитового оператора.

if (expression1 || expression2 || expression3)

Если выражение 1 истинно, выражения 2 и 3 НЕ будут проверяться.

if (expression1 | expression2 | expression3)

Будет проверено выражение 2 и 3, даже если 1 уже верно.

Операторы короткого замыкания могут сократить время выполнения, избегая вызова более поздних функций. Они также могут избежать исключения Null Exception, если выражение 1 проверяет, действителен ли объект.

Использование в Java

class ConditionalDemo1 {public static void main (String args) {int value1 = 1; int значение2 = 2; if ((значение1 == 1) (значение2 == 2)) System.out.println ("значение1 равно 1 И значение2 равно 2"); if ((значение1 == 1) || (значение2 == 1)) System.out.println ("значение1 равно 1 ИЛИ значение2 равно 1"); }}
?

В большинстве языков программирования ?: называется условным оператором. Это тип тернарного оператора, в то время как тернарный оператор в большинстве случаев означает конкретно ?:, потому что это единственный оператор, который принимает три операнда.

Обычный использование «?:»

?:используется в условных выражениях. Программисты могут переписать выражение if-then-else в более сжатой форме, используя условный оператор.

Syntax

condition? выражение 1: выражение 2

условие: выражение, которое оценивается как логическое значение.

выражение 1, выражение 2: выражения со значениями любого типа.

Если условие оценивается как истинное, выражение 1 будет оценено. Если условие оценивается как ложное, выражение 2 будет оценено.

Его следует читать как: «Если условие истинно, присвоить значение выражения 1 результату. В противном случае присвоить значение выражения 2 результату».

Свойство ассоциации

Условный оператор является правоассоциативным, что означает, что операции группируются справа налево. Например, выражение формы? до н.э ? d: e оценивается как a? b: (c? d: e).

Примеры по языкам

Java
class ConditionalDemo2 {public static void main (String args) {int value1 = 1; int значение2 = 2; int результат; логическое someCondition = true; result = someCondition? значение1: значение2; System.out.println (результат); }}

В этом примере, поскольку someCondition истинно, эта программа выводит на экран "1". Используйте оператор?: Вместо оператора if-then-else, если он делает ваш код более читабельным; например, когда выражения компактны и не имеют побочных эффектов (таких как присваивания).

C ++
#include int main () {int x = 1; int y = 2; std :: cout << ( x>y? x: y) << " is the greater of the two." << std::endl; }

Есть несколько правил, которые применяются ко второму и третьему операндам в C ++:

  • Если оба операнда одного типа, результат будет того же типа
  • Если оба операнда арифметических или перечислимых типов выполняются обычные арифметические преобразования (описанные в разделе Стандартные преобразования) для преобразования их в общий тип
  • Если оба операнда относятся к типам указателей или если один является типом указателя, а другой - типом указателя. постоянное выражение, значение которого равно 0, преобразования указателя выполняются для преобразования их в общий тип
  • Если оба операнда относятся к ссылочным типам, преобразования ссылок выполняются для преобразования их в общий тип
  • Если оба операнда имеют тип void, общий тип - тип void
  • Если оба операнда относятся к одному и тому же определяемому пользователем типу, общий тип - это этот тип.
C #
// условие? первое_выражение: второе_выражение; статический двойной sinc (двойной x) {return x! = 0.0? Математический синтаксис (x) / x: 1.0; }

Есть несколько правил, которые применяются ко второму и третьему операндам в C #:

  • Если x имеет тип X, а y имеет тип Y, то
  • Если неявное преобразование (неявные преобразования) существует из X в Y, но не из Y в X, тогда Y является типом условного выражения.
  • Если существует неявное преобразование (неявные преобразования) из Y в X, но не из X в Y, то X является тип условного выражения.
  • В противном случае тип выражения не может быть определен и возникает ошибка времени компиляции.
  • Если только один из x и y имеет тип, и оба x и y, of неявно преобразуются в этот тип, тогда это тип условного выражения.
  • В противном случае невозможно определить тип выражения и возникает ошибка времени компиляции.
JavaScript
var age = 26; var drink = (возраст>= 21)? «Пиво»: «Сок»; console.log (напиток); // "Пиво"

Условный оператор JavaScript совместим со следующими браузерами:

Chrome, Edge, Firefox (1), Internet Explorer, Opera, Safari, Android webview, Chrome для Android, Edge Mobile, Firefox для Android (4), Opera для Android, Safari на IOS, Samsung Internet, Node.js.

Специальное использование в условной цепочке

Тернарный оператор является правоассоциативным, это означает, что его можно "связать" следующим образом, аналогично цепочке if... else if... else if... else.

Примеры по языкам

JavaScript
пример функции (…) {return condition1? значение1: условие2? значение2: условие3? значение3: значение4; } // Эквивалентно: function example (…) {if (condition1) {return value1; } еще если (условие2) {возвращаемое значение2; } еще если (условие3) {возвращаемое значение3; } else {возвращаемое значение4; }}
C / C ++
const double a = expression1? a1: выражение2? a2: выражение3? a3: / * иначе * / a4; // Эквивалент: double a; если (выражение1) а = а1; иначе, если (выражение2) а = а2; иначе, если (выражение3) а = а3; else / * иначе * / a = a4;

Специальное использование в выражении присваивания

условный оператор может дать L-значение в C / C ++, которому может быть присвоено другое значение, но подавляющее большинство программистов считают это крайне плохим стиль, хотя бы потому, что техника неясна.

C / C ++

((foo)? bar: baz) = frink; // эквивалент: if (foo) bar = frink; иначе baz = frink;
См. Также
Ссылки
Последняя правка сделана 2021-05-15 09:03:58
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте