~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 1B71823FFE7756DA5DC4650E2053B246__1702165500 ✰
Заголовок документа оригинал.:
✰ Conditional operator - Wikipedia ✰
Заголовок документа перевод.:
✰ Условный оператор — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Conditional_operator ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/1b/46/1b71823ffe7756da5dc4650e2053b246.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/1b/46/1b71823ffe7756da5dc4650e2053b246__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 18:55:29 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 10 December 2023, at 02:45 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Условный оператор — Википедия Jump to content

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

Из Википедии, бесплатной энциклопедии

Условный оператор поддерживается во многих языках программирования . Этот термин обычно относится к ?:как в 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++:

  • Если оба операнда имеют один и тот же тип, результат будет того же типа.
  • Если оба операнда имеют арифметический или перечисляемый тип, выполняются обычные арифметические преобразования (описанные в разделе «Стандартные преобразования») для их преобразования к общему типу.
  • Если оба операнда относятся к типам указателей или один из них является типом указателя, а другой является константным выражением, значение которого равно 0, выполняются преобразования указателей для преобразования их в общий тип.
  • Если оба операнда имеют ссылочные типы, выполняются преобразования ссылок для их преобразования в общий тип.
  • Если оба операнда имеют тип void, общий тип — это тип void.
  • Если оба операнда имеют один и тот же определяемый пользователем тип, общим типом является этот тип. [4]
С# [ править ]
// состояние ?   первое_выражение: второе_выражение; 

  static   double   sinc  (  double   x  )  
 { 
     return   x   !=   0.0   ?    Математика  .   Син  (  х  )  /  х   :   1,0  ; 
  } 

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

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

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

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

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

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

Примеры по языкам [ править ]

JavaScript [ править ]
 функции  пример  (  )   { 
   		  возврата1   условие   ?    значение1 
        		 :   условие2   ?    значение2 
         		 :   условие3   ?    значение3 
         		 :   значение4  ; 
  } 

 // Эквивалентно: 

 функции   пример  (  )   { 
    	 if   (  condition1  )   {   return   value1  ;    } 
  		 Еще   если   (  условие2  )   {   возвращаемое   значение2  ;    } 
   		 Еще   если   (  условие3  )   {   возвращаемое   значение3  ;    } 
    	 Еще   {   возвращаемое   значение4  ;    } 
 } 
Си/С++ [ править ]
const   double   a   = 
	 выражение1 	 ?    а1 
	 :   выражение2 	 ?    а2 
	 :   выражение3 	 ?    a3 
	 :   /*иначе*/ 	 a4  ; 

  // Эквивалентно: 

 double   a  ; 
    если   (  выражение1  ) 
	 а   =   а1  ; 
    иначе   если   (  выражение2  ) 
	 а   =   а2  ; 
    иначе   если   (  выражение3  ) 
	 а   =   а3  ; 
    else   /*иначе*/ 
	 a   =   a4  ; 

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

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

Си/С++ [ править ]

((  foo  )   ?   bar   :   baz  )   =   frink  ; 

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

См. также [ править ]

Ссылки [ править ]

  1. ^ «Операторы равенства, отношения и условные операторы (Учебные пособия по Java™ > Изучение языка Java > Основы языка)» . docs.oracle.com . Проверено 29 апреля 2019 г.
  2. ^ Перейти обратно: а б с БиллВагнер. «?: Оператор — Справочник по 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 г.
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 1B71823FFE7756DA5DC4650E2053B246__1702165500
URL1:https://en.wikipedia.org/wiki/Conditional_operator
Заголовок, (Title) документа по адресу, URL1:
Conditional operator - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)