русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Вирази умов


Дата додавання: 2014-11-28; переглядів: 825.


Вирази на зразок

if (a > b)

z = a;

else

z = b;

обчислюють z як найбільше значення з-поміж a та b. Умовний вираз із використанням трійчастого оператора «?:» дають альтернативний спосіб написання подібної конструкції. У виразі

expr1 ? expr2 : expr3

вираз expr1 розглядається першим. Якщо expr1 ненульовий (істина), тоді обчислюється expr2, і це й буде кінцевим значенням цілого виразу умови. У протилежному випадку, обчислюється expr3, і він стане кінцевим значенням. Оцінюється тільки один із expr2 та expr3. Таким чином, щоб встановити z до максимального значення a або b, ми напишемо

z = (a > b) ? a : b; /* z = max(a, b) */

Слід зауважити, що вираз умови — це дійсно вираз, і може бути використаний там де будь-який інший. Якщо expr2 і expr3 — різних типів, тип результату визначається правилами перетворення, обговорених раніше в цьому розділі. Наприклад, якщо f має тип float, а n — це int, тоді вираз

(n > 0) ? f : n

буде типу float, незалежно від того, чи n додатній.

Дужки не обов'язкові навколо першого виразу оскільки пріоритет ? й : дуже низький, лишень трохи вищий за присвоєння. Проте, їх рекомендовано вживати, оскільки вони роблять умовну частину виразу очевиднішою.

Умовні вирази, як правило, призводять до стислішого коду. Наприклад, наступний цикл виводить n елементів масиву, по 10 на кожний рядок, стовпчики будучи розділені пробілом, кожний рядок (включаючи останній) завершується символом нового рядка.

for (i = 0; i < n; i++)

printf("%6d%c", a[i], (i%10==9 || i==n-1) ? '\n' : ' ');

Символ нового рядка виводиться після кожного десятого елемента і після n-нного. За рештою елементів слідує пробіл. Це може здаватися складним, але воно компактніше ніж еквівалент ізif-else. Іншим хорошим прикладом є

printf("You have %d items%s.\n", n, n==1 ? "" : "s");

Вправа 2-10. Перепишіть функцію lower, яка обертає літери верхнього регістру на нижній, за використанням виразу умови замість if-else.


<== попередня лекція | наступна лекція ==>
Оператори та вирази присвоєння | Пріоритет і послідовність обчислення


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн