stringtranslate.com

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

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

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

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

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

if ( выражение1 || выражение2 || выражение3 )     

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

если ( выражение1 | выражение2 | выражение3 )     

При этом проверяются выражения 2 и 3, даже если выражение 1 истинно.

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

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

класс  ConditionalDemo1 {  public static void main ( String [] args ) { int value1 = 1 ; целое значение2 = 2 ; if (( значение1 == 1 ) && ( значение2 == 2 )) System . вне . println ( "значение1 равно 1 И значение2 равно 2" ); if (( значение1 == 1 ) || ( значение2 == 1 )) System . вне . println ( "значение1 равно 1 ИЛИ значение2 равно 1" ); } }                                

"?:"

В большинстве языков программирования ?: называется условным оператором. Это тип тернарного оператора . Однако в большинстве ситуаций тернарный оператор относится именно к ?:, поскольку это единственный оператор, принимающий три операнда. [2]

Регулярное использование "?:"

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

Синтаксис

состояние ? выражение 1 : выражение 2      

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

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

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

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

Собственность ассоциации

Условный оператор правоассоциативен, то есть операции группируются справа налево. Например, выражение формы a ? До нашей эры ? d: e оценивается как ? б: (в?г:е). [2]

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

Джава
класс  ConditionalDemo2 {  public static void main ( String [] args ) { int value1 = 1 ; целое значение2 = 2 ; int результат ; логическое значение someCondition = true ; результат = какое-то условие ? значение1 : значение2 ;                           Система . вне . println ( результат ); } } 

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

С++
#include <iostream> int main () { int x = 1 ; интервал у = 2 ; std :: cout << ( x > y ? x : y ) << "является большим из двух." << std :: endl ; }                         

Существует несколько правил, применимых ко второму и третьему операндам в C++:

С#
// состояние ? первое_выражение: второе_выражение;static double sinc ( double x ) { return x != 0.0 ? Математика . Син ( х ) / х : 1,0 ; }            

Существует несколько правил, применимых ко второму и третьему операндам x и y в C#:

JavaScript
вар возраст = 26 ; вар напиток = ( возраст >= 21 ) ? «Пиво» : «Сок» ; консоль . журнал ( напиток ); // "Пиво"             

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

Chrome , Edge , Firefox (1), Internet Explorer , Opera , Safari , веб-просмотр Android, Chrome для Android , Edge Mobile , Firefox для Android (4), Opera для Android , Safari на IOS, Samsung Internet , Node.js. [5]

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

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

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

JavaScript
пример функции ( ) { условие возврата1 ? значение1 : условие2 ? значение2 : условие3 ? значение3 : значение4 ; }                // Эквивалентно:пример функции ( ) { if ( условие1 ) { возвращаемое значение1 ; } Еще если ( условие2 ) { возвращаемое значение2 ; } Еще если ( условие3 ) { возвращаемое значение3 ; } Еще { возвращаемое значение4 ; } }                           
С/С++
const double a = выражение1 ? а1 : выражение2 ? а2 : выражение3 ? a3 : /*иначе*/ a4 ;         // Эквивалентно:двойная а ; если ( выражение1 ) а = а1 ; иначе если ( выражение2 ) а = а2 ; иначе если ( выражение3 ) a = a3 ; else /*иначе*/ a = a4 ;                   

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

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

С/С++

(( foo ) ? bar : baz ) = frink ;      //эквивалентно: if ( foo ) bar = frink ; еще баз = Фринк ;       

Смотрите также

Рекомендации

  1. ^ «Операторы равенства, отношения и условные операторы (Учебные пособия по Java™> Изучение языка Java> Основы языка)» . docs.oracle.com . Проверено 29 апреля 2019 г.
  2. ^ abc БиллВагнер. «?: Оператор — Справочник по C#». docs.microsoft.com . Проверено 29 апреля 2019 г.
  3. ^ «Оператор ? : в Java». www.cafeaulait.org . Проверено 29 апреля 2019 г.
  4. ^ аб Майкблом. «Условный оператор: ? :». docs.microsoft.com . Проверено 29 апреля 2019 г.
  5. ^ «Условный (тройной) оператор — JavaScript». http://developer.mozilla.org . Проверено 29 апреля 2019 г.
  6. ^ «Условный оператор». wiki.c2.com . Проверено 29 апреля 2019 г.