Умовна операція ?: - єдина тернарна операція в мові Сі. Її синтаксис :
умова ? вираз_1 : вираз_2
Принцип її роботи такий. Спочатку обчислюється вираз умови. Якщо цей вираз має ненульове значення, то обчислюється вираз_1. Результатом операції ?: в даному випадку буде значення виразу_1. Якщо вираз умови рівний нулю, то обчислюється вираз_2 і його значення буде результатом операції. В будь-якому випадку обчислюється тільки один із виразів (вираз_1 або вираз_2).
Наприклад, дану операцію зручно використати для знаходження найбільшого з двох чисел x і y:
max=(x>y)?x:y;
Приклад 1 :
#include<stdio.h>
void main()
{
int points;
printf("Введiть оцiнку [2..5]:");
scanf("%d",&points);
printf("%s",points>3?"Ви добре знаєте матерiал!":"Погано...");
}
Приклад 2 :
j = (i<0) ? (-i) : (i); /* змінній j присвоюється модуль i*/
Вираз послідовного обчислення (операція , )
Операція "кома" (,) називається операцією послідовного обчислення, яка "зв'язує" два довільних вирази. Список виразів, розділених між собою комами, обчислюються зліва направо. Наприклад, фрагмент тексту
a=4;
b=a+5;
можна записати так :
a=4, b=b+5;
Операція послідовного обчислення використовується в основному в операторах циклу for()
Для порівняння наводимо приклад з використанням операції слідування (приклад 1) та без неї (приклад 2):