Найти тему
D21nk Master

Всё логично

В предыдущей статье мы переписали программу по тренировке памяти.Это кстати называется рефакторинг.Сегодня же мы закроем тему логических условий.

Освежим память и посмотрим на конструкцию if:

if(a==10)
printf("a equal 10\n");

Тут сравнивается лишь одна переменная,а что если нам необходимо сравнить не два значени,а сразу несколько?В этом нам помогут следующие конструкции:

&& - логическое "и".Возвращает истину когда оба сравнения истины

|| - логическое "или".Возвращает истину когда хотя бы одно сравнение истинно

Рассмотрим примеры:

int a=0;
int b=0;
printf("Enter a:);
scanf("%d",&a);
printf("Enter b:);
scanf("%d",&b);
if((a==10) && (b==10))
printf("a and b equal 10\n");
else if((a==3) || (b==3)
printf("a or b equal 3\n");

Думаю тут всё ясно,стоит лишь прояснить ситуацию со скобками.Скобки,как и в математике используются для обозначения приоритета операций.Так в первом примере сначала программа проверит чему равна a,после чему равна b и только потом проверит,оба ли они истины.

Скобки,как правило, не всегда обязательны,но для уверенности правильной работы условий и повышения читабельности желательно их ставить.

Ранее мы так же рассматривали логическое отрицание '!',используя скобки можно применять один трюк:

if(!((a==10) && (b==10)))
printf("a and b not equal 10\n");

Можете запомнить такой трюк как "отзеркаливание" потому как тут всё становится наоборот.Если оба числа не равны 10-то условие выполнится.

В заключение добавлю,что на си имеется ещё парочка "логичных трюков" в рукаве,некоторые из них ускорят ваши программы(программисты на си вообще любят экономить память и ускорять программы).

Чтобы закрепить тему-"побалуйтесь" с этими условиями.Можете добавить в программу по тренировке памяти,в секцию выбора сложности.Желаю успехов!