Ако ... Друго изявление в C Обяснено

Условен поток на код е способността да се променя начинът, по който даден код се държи въз основа на определени условия. В такива ситуации можете да използвате ifизявления.

В ifотчета е известен също като изявление на вземане на решение, тъй като тя взема решение въз основа на дадено състояние или израз. Блокът от код вътре в ifоператора се изпълнява, ако условието оценява на true. Кодът в къдравите скоби обаче се пропуска, ако условието се изчисли на 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оценява на true, така че кодът изпълнява printfфункцията.

if..else изявления

В if...elseоператор, ако кодът в скобите на ifизраза е верен, кодът в скобите му се изпълнява. Но ако изразът в скобите е невярен, elseвместо него се изпълнява целият код в скобите на израза.

Разбира се, горният пример не е много полезен в този случай, защото trueвинаги оценява на 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, вместо да използвате булеви стойности 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, в противен случай невярно
Не е равно наa != bВярно, ако aне е равно на b, в противен случай невярно
По-велик от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.