Условный оператор в c: Условные операторы в Си : использование if-else, switch

Условный оператор: ?: | Microsoft Learn

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья

Синтаксис

expression ? expression : expression

Условный оператор (? :) является тернарным оператором (он принимает три операнда). Условный оператор работает следующим образом.

  • Первый операнд неявно преобразуется в bool. Он вычисляется, и все побочные эффекты завершаются перед продолжением.

  • Если первый операнд имеет true значение (1), вычисляется второй операнд.

  • Если первый операнд имеет false значение (0), выполняется оценка третьего операнда.

Результатом условного оператора является оцененного операнда — второго или третьего. В условном выражении оценивается только один из последних двух операндов.

Условные выражения имеют ассоциативность справа налево. Первый операнд должен иметь целочисленный тип или тип указателя. Следующие правила применяются ко второму и третьему операндам.

  • Если оба операнда имеют один и тот же тип, результат имеет тот же тип.

  • Если оба операнда имеют арифметические типы или типы перечисления, обычные арифметические преобразования (охваченные стандартными преобразованиями) выполняются для их преобразования в общий тип.

  • Если оба операнда имеют тип указателя или один операнд относится к типу указателя, а другой является выражением константы со значением 0, преобразования указателя выполняются с целью преобразования их к общему типу.

  • Если оба операнда имеют ссылочные типы, для преобразования их в общий тип используются ссылочные преобразования.

  • Если оба операнда имеют тип void, общий тип также имеет тип void.

  • Если оба операнда относятся к одному определяемому пользователем типу, общий тип также относится к этому типу.

  • Если операнды относятся к разным типам и по крайней мере один из операндов относится к определяемому пользователем типу, для определения общего типа используются правила языка (см. предупреждение ниже).

Какие-либо сочетания второго и третьего операндов, отсутствующие в предыдущем списке, недопустимы. Тип результата — это общий тип и l-значение, если и второй, и третий операнды имеют один и тот же тип и представляют собой l-значения.

Предупреждение

Если типы второго и третьего операндов не идентичны, вызываются правила преобразования сложных типов в соответствии со стандартом C++. Эти преобразования могут привести к непредвиденному поведению, включая создание и удаление временных объектов. По этой причине мы настоятельно рекомендуем вам (1) либо избегать использования определяемых пользователем типов в качестве операндов в условных операторах, (2) либо, если определяемые пользователем типы все же используются, явно приводить каждый операнд к общему типу.

Пример

// expre_Expressions_with_the_Conditional_Operator.cpp
// compile with: /EHsc
// Demonstrate conditional operator
#include <iostream>
using namespace std;
int main() {
   int i = 1, j = 2;
   cout << ( i > j ? i : j ) << " is greater." << endl;
}

См. также раздел

Операторы C++, приоритет и ассоциативность
Оператор Conditional-Expression

Что такое условный оператор в c? — определение из техопедии

Определение — что означает условный оператор?

Условный оператор в C # — это оператор, который принимает три операнда (проверяемые условия), значение, когда условие истинно, и значение, когда условие ложно.


Условный оператор представлен символом «?:». Первый операнд (указанный перед ‘?:’) Является оценочным (условным) выражением. Это должно быть так, что тип вычисляемого выражения может быть неявно преобразован в ‘bool’ или в котором реализован оператор true, чтобы избежать ошибок компиляции. Второй и третий операнды управляют типом условного выражения. Он чаще используется в присваивании, а не в качестве оператора, приводящего к ошибкам компиляции.


Если возвращаемое значение первого операнда (условного выражения) равно true, второй операнд вычисляется. В противном случае третий операнд оценивается. Следовательно, результат условного оператора является результатом оценки выражения, рассматриваемого для оценки.


Для выражения, заданного как x? A: b, операнд a будет оценен, если только операнд x (условное выражение) вернет true. В противном случае операнд b будет оценен.


Этот термин также известен как троичный оператор или встроенный оператор if (iif).

Техопедия объясняет условного оператора

Условный оператор — единственный троичный оператор (с тремя операндами) в C #. Он создается как альтернатива конструкции if-else, которая обеспечивает лучшую краткость с меньшим количеством кода и лучшую читаемость. Во время компиляции компилятор C # преобразует троичное выражение в операторы ветвления, которые могут сгущать множественные операторы if и уменьшать вложенность на уровне исходного кода. Иногда код, сгенерированный для троичного оператора, может повысить производительность, переупорядочив некоторые инструкции.


Свойства условного оператора:

  • Он является ассоциативным справа, подразумевая, что операции сгруппированы справа налево.
  • Он всегда вычисляет одно из двух выражений, указанных после символа условного оператора. Он никогда не оценивает оба.
  • Первый операнд должен быть целочисленным или указательного типа.
  • Второй и третий операнды должны быть конвертируемыми друг в друга и не взаимно конвертируемыми в какой-либо другой тип.
  • Тип результата — это общий тип, представляющий собой l-значение, но только если второй и третий операнды имеют одинаковый тип и оба являются l-значениями.
  • В качестве оператора можно использовать только вызов присваивания, приращение, декремент и выражение нового объекта.
  • Когда результат вычисления выражения с использованием тернарного оператора используется в операторе возврата метода, его тип должен соответствовать типу возврата метода включения для успешной компиляции.
  • Когда результат не является константой, тип условного выражения основан на более распространенном из двух типов.

Это определение было написано в контексте C #

Условные операторы в C (?:) — Синтаксис, примеры

Условные операторы в C
  • Условный оператор — это тернарный оператор в C, используемый для условной оценки. В предыдущей статье были рассмотрены операторы в C и их типы.
  • Символ оператора ?:  
  • Это тернарный оператор, поскольку он оперирует тремя операндами.

 

Синтаксис условного оператора: Рисунок 1. Синтаксис условного оператора
  • Условный оператор представляет собой набор трех операндов .
  • выражение1 — это первый операнд, который может быть значением или выражением, или это может быть любой оператор C, например вызов функции или что-то в этом роде.
  • Итак, за первым операндом следует вопросительный знак ( ? ), а за вторым операндом следует двоеточие ( : ), а после этого идет третий операнд.
  • Здесь, если выражение1 истинно, тогда выполняется выражение2 ; если выражение1 ложно, то выполняется выражение3 .

 

 

Вычисление условного оператора на примере:

Пример показан на рис. 2.

Рисунок 2. Вычисление условного операнда на примере

 

Здесь есть переменная a , а (5+4)? (9-4):99 — условное выражение операции. (5+4) — операнд1, (9-4) — операнд2, а 99 — операнд3.

В этом случае сначала вычисляется или выполняется выражение1. При выполнении 5+4, если этот операнд истинен, то будет выполнено выражение 9-4, а результат этого выражения будет сохранен в переменной a .

Если вычисление выражения 5+4 ложно, то будет выполнено или оценено 99, а результат будет сохранен в переменной a. В этом случае a = 5, потому что верно 5+4. Очень просто.

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

 

Рисунок 3. Сводка условного операнда

Сводка условного оператора, как показано на рисунке 3.

Выражение1 выполняется первым, и если результат истинен, то выражение2 будет окончательным результатом. Таким образом, если оценка выражения 1 ложна, то окончательным результатом будет выражение 3.

 

 

Используйте условный оператор для замены операторов if-else

Например, рассмотрим приведенный ниже фрагмент кода.

Рисунок 4. Фрагмент кода

Здесь вы сравниваете переменную age со значением 18, а затем принимаете решение.

Весь код можно записать в одну строку с использованием условного оператора.

Рисунок 5. Использование условного оператора

Здесь оценивается первый (возраст <18). Если оно верно, то будет выполнено выражение printf("вы не имеете права голоса\n"). В данном случае выражение представляет собой вызов функции, то есть printf. Обратите внимание, что в конце printf нет точки с запятой. Поскольку это законченное утверждение, которое заканчивается в конце, не ставьте промежуточную точку с запятой.

Теперь, если оценка (возраст<18) ложна, то будет выполнено printf("Поздравляем!!! Вы можете голосовать\n").

Итак, иногда вы можете использовать условный оператор вместо if-else.

 

Возьмем другой пример.

Рисунок 6. Пример

Здесь int32_t a = 5. Каков результат a, после выполнения a=0?(a<9): a++; заявление?

Сначала проверьте первый операнд a=0, который ложен, потому что 5 не равно 0. Если первый операнд ложен, то будет выполнен третий операнд и присвоено значение переменной и . Здесь третий операнд — это а++. Эквивалентный код становится a = a++; (это постинкремент). Итак, результатом a будет 5.

Некоторые из вас могут удивиться или возразить, что a = 6, но это не так. Итак, позвольте мне объяснить, как это выполняется.

В данном случае это a = a++. Начальное значение а равно 5. Когда мы обсуждали постинкремент и преинкремент, что я сказал? Сначала значение переменной а присваивается левой переменной, а затем значение а увеличивается. Итак, a становится 5,

а = 5;

а = а++;

а = 5;

 

Пример пост-инкремента приведен ниже.

Рисунок 7. Пример пост-инкремента

 

Теперь давайте рассмотрим другой пример. Здесь int32_t a=5, b=10. Выражение   a = !(a+b) ? !(а<9) : а;. Какова ценность а?

Рисунок 8. Пример

Сначала должен быть оценен операнд1. операнд1 равен !(a + b) , что равно !(5+10) . Это означает !(15) . !(15) , что не что иное, как 0 (ложь).

Если первый операнд ложен, то будет выполнен третий операнд. Здесь третий операнд — a . Таким образом, значение будет присвоено значение . Таким образом, значение a= 5 в этом случае.

 

Это касается условных операторов. Давайте узнаем об операторе switch/case в следующей статье.

 

Курсы FastBit Embedded Brain Academy

Нажмите здесь: https://fastbitlab.com/course1

 

Условный оператор в C | Как работают условные операторы в C?

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

Условный оператор также известен как тернарный оператор. Давайте посмотрим на синтаксис объявления оператора условия в программировании на C:

 Condition? True_value : False_value 

Следовательно, согласно синтаксису, мы можем поместить наше условие там, где оно написано, тогда, если это условие истинно, оно будет оцениваться как первое утверждение, иначе оно перейдет ко второму условию.

Например:

 Выражение 1? Выражение 2 : Выражение 3 

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

Как работают условные операторы в C?

Теперь давайте посмотрим, как работают условные операторы в программировании на C и как реализовать эти условия в нашем коде на C.

Но сначала мы увидим типы условных операторов и их использование:

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

Примеры реализации условных операторов в C

Мы будем использовать эти операторы, чтобы понять работу условных операторов в C с реализацией.

Пример #1

Код:

 #include 
основной ()
{
int p = 20, q = 20, r = 30, результат;
результат = ( p == q ) && ( r > q ) ;
printf("Результатом (p == q) && (r > q) является %d\n", результат);
результат = ( p == q ) && ( r < q ) ;
printf("Результат (p == q) && (r < q) равен %d\n", результат);
результат = ( p == q ) || ( г < д ) ;
printf("Результат (p == q) || (r

Выходные данные:

В приведенном выше коде мы объявили 4 целых числа p, q, r и результат, в котором результат будет хранить результаты всех примененных условий к оставшимся трем целочисленным переменным. Затем один за другим мы применили эти &&, || и ! = операции над объявленными переменными.

Таким образом, значения будут сравниваться в соответствии с указанным кодом, а результаты будут сохранены в виде целого числа результатов.

Пример #2

Код:

 #include 
основной ()
{
интервал отметок_получено ;
printf("Пожалуйста, введите полученные отметки:");
scanf("%d", &marks_obtained);
если (получено_отметок >= 36)
printf("\nПоздравляем!! Вы успешно прошли");
еще
printf("\nВы потерпели неудачу");
вернуть 0 ;
} 

Ввод:

Вывод:

Пример #3

Код: 90 019

 #include 
основной ()
{
интервал отметок_получено ;
printf("Пожалуйста, введите полученные оценки:");
scanf("%d", &marks_obtained);
puts (marks_obtained >
= 36 ? "Поздравляем!! Вы прошли" : "Вы не прошли" ); вернуть 0 ; }

Ввод:

Вывод:

Если вы сравните последние два кода, они выполняют одни и те же операции с точно такими же целыми числами и условиями. Единственная разница, которую мы можем увидеть в последнюю секунду, заключается в использовании условия if else для проверки состояния метки и последующего отображения вывода, тогда как в последнем коде мы используем условные операторы для выполнения той же операции с точно такими же целыми числами и полученными отмечает значение. Поэтому, чтобы показать, почему используются условные операторы, из двух последних кодов видно, что использование условного оператора вместо использования if-else может сэкономить несколько строк кода. Кроме того, это более эффективно, так как если одно условие уже истинно, то компилятор даже не будет переходить к остальным условиям, что сэкономит время как компиляции, так и выполнения. Что касается памяти, условный оператор также сэкономит место.

Заключение

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

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *