Якщо ... Інше висловлення в C Пояснено

Умовний потік коду - це можливість змінити поведінку шматка коду на основі певних умов. У таких ситуаціях можна використовувати ifтвердження.

ifЗаява також відомо як прийняття рішень заяви, як це робить рішення на основі заданої умови або виразу. Блок коду всередині ifоператора виконується, якщо умова обчислюється як істина. Однак код усередині фігурних дужок пропускається, якщо умова має значення false, а код після виконання ifоператора.

Синтаксис ifвисловлювання

if (testCondition) { // statements }

Простий приклад

Давайте розглянемо приклад цього в дії:

#include  #include  int main(void) { if(true) { printf("Statement is True!\n"); } return 0; }

Вихід:

Statement is True!

Якщо код у дужках ifвисловлювання є істинним, виконується все, що знаходиться в фігурних дужках. У цьому випадку trueобчислюється як істина, тому код запускає printfфункцію.

if..else заяви

У if...elseоператорі, якщо код у дужках ifоператора є істинним, виконується код усередині його дужок. Але якщо вираз усередині дужок хибний, elseзамість цього виконується весь код у дужках виразу.

Звичайно, наведений вище приклад не надто корисний у цьому випадку, оскільки trueзавжди оцінює істину. Ось ще трохи практичніше:

#include  int main(void) { int n = 2; if(n == 3) { // comparing n with 3 printf("Statement is True!\n"); } else { // if the first condition is not true, come to this block of code printf("Statement is False!\n"); } return 0; }

Вихід:

Statement is False!

Тут є кілька важливих відмінностей. По-перше, stdbool.hне було включено. Це нормально, тому що trueі falseне використовуються, як у першому прикладі. У C, як і в інших мовах програмування, ви можете використовувати оператори, які оцінюють як істинні чи хибні, а не використовуючи логічні значення trueабо falseбезпосередньо.

Також зверніть увагу на умову в дужках в ifзаяві: n == 3. Ця умова порівнює nі число 3. ==є оператором порівняння і є однією з кількох операцій порівняння в C.

Вкладені if...else

if...elseЗаява дозволяє зробити вибір , щоб бути між двома можливостями. Але іноді потрібно вибрати між трьома і більше можливостями.

Наприклад, функція знаку в математиці повертає -1, якщо аргумент менше нуля, +1, якщо аргумент більше нуля, і повертає нуль, якщо аргумент дорівнює нулю.

Наступний код реалізує цю функцію:

if (x < 0) sign = -1; else if (x == 0) sign = 0; else sign = 1;

Як бачите, другий if...elseоператор вкладено в elseоператор першого if..else.

Якщо xменше 0, тоді signвстановлюється -1. Однак, якщо xне менше 0, if...elseвиконується другий оператор. Там, якщо xдорівнює 0, signтакож встановлюється рівне 0. Але якщо xбільше 0, signзамість цього встановлюється рівне 1.

Замість вкладеного if...elseоператора початківці часто використовують рядок ifоператорів:

if (x  0) { sign = 1; }

Хоча це працює, це не рекомендується, оскільки незрозуміло, що лише один з операторів присвоєння ( sign = ...) призначений для виконання залежно від значення x. Це також неефективно - кожного разу, коли код працює, перевіряються всі три умови, навіть якщо одна або дві не повинні бути.

ще ... якщо твердження

if...elseоператори - це альтернатива рядку ifоператорів. Розглянемо наступне:

#include  int main(void) { int n = 5; if(n == 5) { printf("n is equal to 5!\n"); } else if (n > 5) { printf("n is greater than 5!\n"); } return 0; }

Вихід:

n is equal to 5!

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

Оператори порівняння

Ім'я оператораВикористанняРезультат
Дорівнюєa == bІстинно, якщо aдорівнює b, інакше - false
Не дорівнюєa != bІстинно, якщо aне дорівнює b, інакше - false
Більше ніжa > bІстинно, якщо aбільше ніж b, інакше неправда
Більший або рівнийa >= bІстинно, якщо aбільше або дорівнює b, інакше - false
Менше ніжa < bІстинно, якщо aменше b, інакше неправда
Менше або дорівнюєa <= bІстинно, якщо aменше або дорівнює b, інакше - false

Логічні оператори

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

Ім'я оператораВикористанняРезультат
Ні ( !)!(a == 3)Правда , якщо aце НЕ дорівнює 3
І ( &&)a == 3 && b == 6Істинно, якщо aдорівнює 3 іb дорівнює 6
Або ( ||)a == 2 || b == 4True if a is equal to 2 orb is equal to 4

For example:

#include  int main(void) { int n = 5; int m = 10; if(n > m || n == 15) { printf("Either n is greater than m, or n is equal to 15\n"); } else if( n == 5 && m == 10 ) { printf("n is equal to 5 and m is equal to 10!\n"); } else if ( !(n == 6)) { printf("It is not true that n is equal to 6!\n"); } else if (n > 5) { printf("n is greater than 5!\n"); } return 0; }

Output:

n is equal to 5 and m is equal to 10!

An important note about C comparisons

While we mentioned earlier that each comparison is checking if something is true or false, but that's only half true. C is very light and close to the hardware it's running on. With hardware it's easy to check if something is 0 or false, but anything else is much more difficult.

Instead it's much more accurate to say that the comparisons are really checking if something is 0 / false, or if it is any other value.

For example, his if statement is true and valid:

if(12452) { printf("This is true!\n") }

By design, 0 is false, and by convention, 1 is true. In fact, here’s a look at the stdbool.h library:

#define false 0 #define true 1

While there's a bit more to it, this is the core of how booleans work and how the library operates. These two lines instruct the compiler to replace the word false with 0, and true with 1.