Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы.doc
Скачиваний:
48
Добавлен:
07.03.2016
Размер:
3.6 Mб
Скачать

5.2. Операції відношення

Операції відношення (< (менше), <= (менше або дорівнює), > (більше), >= (більше або дорівнює), == (дорівнює), != (не дорівнює)) порівнюють перший операнд з другим. Операнди можуть бути арифметичного типу або вказівками. Результатом операції є значення true (1 – істина) або false (0 – неправда) (будь-яке значення, не рівне нулю, інтерпретується як true). Операції порівняння на рівність і нерівність мають менший пріоритет, ніж решта операцій порівняння.

cout << (2 == 2 == 2); // 0 - неправда

cout << (2 < 3); // 1 - істина

Розглянемо використання оператору if.

Оператор if

Синтаксис:

if ( <вираз> )

{ блок з одного або більш операторів }

Якщо після if стоїть 1 оператор, фігурні дужки можна не ставити.

Оператор if ...else

Синтаксис:

if ( <вираз> )

{ блок з одного або більш операторів }

else

{ блок з одного або більш операторів С++ }

if (Х > 0) Y = X * X;

else Y = 2 * X;

5.3. Логічні операції

Логічні операції:

&&I

|| АБО

! НЕ

Операнди логічних операцій І (&&) та АБО (||) можуть мати арифметичний тип або бути вказівками, при цьому операнди в кожній операції можуть бути різних типів. Перетворення типів не виконується, кожен операнд оцінюється з точки зору його еквівалентності нулю (операнд, рівний нулю, розглядається як false, не рівний нулю, – як true).

Результатом логічної операції є true (1) або false (0). Результат операції логічне І має значення true тільки тоді якщо обидва операнди мають значення true. Результат операції логічне АБО має значення true, якщо хоча б один з операндів має значення true. Логічні операції виконуються зліва направо. Якщо значення першого операнда досить, щоб визначити результат операції, другий операнд не обчислюється. Такий засіб називається усіканням.

if ( a > b || c > d || e > f ) – переривається, як тільки обчислюється, що a > b, або c > d.

Логічне заперечення (!) дає в результаті значення 0 (false), якщо операнд є істиною (не нуль), та значення 1 (true), якщо операнд рівний нулю.

!( var1 = = var2 ) – те ж саме var1 ! = var2

Пріоритетність операцій:

  • арифметичні операції;

  • операції відношення;

  • логічні операції.

Усікання може бути використане для коректного обчислення.

Наприклад:

if ( b ! = 0 && a / b > 12.4 ) - коректно, ділення на нуль не буде.

Якщо записати if (a / b > 12.4 && b ! = 0 ) – небезпечно, може бути ділення на нуль.

Логічні вирази повертають значення типу bool. Будь-яке ненульове значення розглядається як істина.

5.4. Додаткові операції

Умовна операція ?

Синтаксис:

результат = вираз1 ? вираз2 : вираз3

Перший вираз може мати арифметичний тип або бути вказівкою. Він оцінюється з погляду його еквівалентності нулю (вираз, рівний нулю, розглядається як false, не рівний нулю, – як true). Якщо результат обчислення виразу 1 рівний true, то результатом умовної операції буде значення другого виразу, інакше – третього виразу. Обчислюється завжди або другий вираз або третій. Їх тип може розрізнятися. Умовна операція є скороченою формою умовного оператора if … else.

Приклад:

#include <iostream>

using namespace std;

void main()

{

int a = 6, b = 8;

int min = ( a < b ) ? a : b;

cout << "min = " << min; // 6

}

Операція інкремент ( ++ ) і декремент ( -- )

Ця операція збільшує або зменшує значення змінної.

При цьому в залежності від розташування справа або зліва від змінної інкремент ++ і -- називають префіксним або постфіксним.

++i означає i = i + 1 або i += 1;

--i означає i = i - 1 або i -= 1;

Якщо змінна має префіксну операцію, вона змінює своє значення перед тим, як буде використана у виразі. Якщо використовується постфіксна операція, то змінна змінить своє значення після обробки виразу:

a = 6;

b = a++ -1; // a = 7 b = 5

Префіксна операція має вищий пріоритет, ніж будь-яка інша операція.

s = ++(a + b ); Помилка!!!

Операція застосовується тільки до змінної.

Приклад:

#include <iostream>

using namespace std;

void main()

{

int i = 1, j = 2, k = 3, a;

a = i++ + j - --k;

cout << a << i << k; // 122

}

Операція sizeof()

Операція визначення розміру sizeof призначена для обчислення розміру об’єкту або типу даних у байтах та має дві форми:

sizeof вираз

sizeof ( тип даних )

Приклад:

#include <iostream>

using namespace std;

void main()

{

float x = 3;

cout << "sizeof(float) = " << sizeof(float);

cout << "\nsizeof(x) = " << sizeof x;

cout << "\nsizeof(x + 5.0) = " << sizeof(x + 5.0);

}

Результат роботи програми:

sizeof(float) = 4

sizeof(x) = 4

sizeof(x + 5.0) = 8