Тернарний оператор ?:. Приклади використання
Зміст
- 1. Призначення оператора ?:. Загальна форма
- 2. Приклади використання тернарного оператора ?:
- 3. Чи може оператор ?: бути вкладеним?
- Зв’язані теми
Пошук на інших ресурсах:
1. Призначення оператора ?:. Загальна форма
Для реалізації виконання дії в залежності від умови використовується оператор ?:. Це єдиний тернарний оператор у мові C#. Для свого виконання він потребує трьох операндів.
Загальна форма оператора ?:
Умова ? Вираз1 : Вираз2
де
- Умова – умовний вираз, який може приймати одне з двох значень: true або false;
- Вираз1 – деякий вираз, який потрібно виконати у випадку якщо значення результат Умова = true;
- Вираз2 – вираз, який потрібно виконати якщо Умова не виконується (Умова = false).
⇑
2. Приклади використання тернарного оператора ?:
Приклад 1. Визначити максимальне значення між двома числами. Текст додатку типу Console Application наступний.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp8 { class Program { static void Main(string[] args) { double x, y; double max; // 1. Ввід даних Console.Write("x = "); x = Convert.ToDouble(Console.ReadLine()); Console.Write("y = "); y = Convert.ToDouble(Console.ReadLine()); // 2. Визначення максимального значення // з допомогою тернарного оператора ?: max = x > y ? x : y; // 3. Вивід результату Console.WriteLine("Maximum = {0:f4}", max); Console.ReadKey(); } } }
Приклад 2. Дано радіус кола та сторона квадрата. Обчислити площу кожної фігури та вивести значення максимальної площі.
Розв’язок задачі для додатку типу Console Application наступний:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp8 { class Program { static void Main(string[] args) { double radius, side; // радіус кола та довжина сторони квадрата double sCircle, sRect; // площі кола та квадрата double maxSquare; // 1. Ввід даних Console.Write("Input radius of a circle: "); radius = Convert.ToDouble(Console.ReadLine()); Console.Write("Input side of a rectangle: "); side = Convert.ToDouble(Console.ReadLine()); // 2. Обчислити площі круга та квадрата sCircle = Math.PI * radius * radius; sRect = side * side; // 3. Обчислити максимальне значення з двох площ // з допомогою тернарного оператора ?: maxSquare = sCircle > sRect ? sCircle : sRect; // 3. Вивід результату Console.WriteLine("Square of a circle = {0:f3}", sCircle); Console.WriteLine("Square of the rectangle = {0:f3}", sRect); Console.WriteLine("Maximum = {0:f3}", maxSquare); Console.ReadKey(); } } }
Результат роботи програми
Input radius of a circle: 2.5 Input side of a rectangle: 3.8 Square of a circle = 19.635 Square of the rectangle = 14.440 Maximum = 19.635
⇑
3. Чи може оператор ?: бути вкладеним?
Так. Оператор ?: може мати довільну кількість вкладень.
Приклад. З допомогою вкладеного оператора ?: обчислюється максимальне значення з трьох чисел a, b, c. Числа вводяться з клавіатури. Додаток типу Console Application.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp8 { class Program { static void Main(string[] args) { int a, b, c; int max; // 1. Ввід значень a, b, c Console.Write("a = "); a = Convert.ToInt32(Console.ReadLine()); Console.Write("b = "); b = Convert.ToInt32(Console.ReadLine()); Console.Write("c = "); c = Convert.ToInt32(Console.ReadLine()); // 2. Обчислення максимального значення з трьох чисел max = a > b ? a > c ? a : c : b > c ? b : c; // 3. Виведення результату Console.WriteLine("Maximum = {0}", max); Console.ReadKey(); } } }
Результат виконання програми
a = 5 b = 3 c = 8 Maximum = 8
⇑
Зв’язані теми
- Оператор умовного переходу if. Повна та скорочена форми. Конструкція if-else-if
- Оператор вибору switch. Вкладені оператори switch
⇑