В предыдущей статье мы переписали программу по тренировке памяти.Это кстати называется рефакторинг.Сегодня же мы закроем тему логических условий.
Освежим память и посмотрим на конструкцию 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-то условие выполнится.
В заключение добавлю,что на си имеется ещё парочка "логичных трюков" в рукаве,некоторые из них ускорят ваши программы(программисты на си вообще любят экономить память и ускорять программы).
Чтобы закрепить тему-"побалуйтесь" с этими условиями.Можете добавить в программу по тренировке памяти,в секцию выбора сложности.Желаю успехов!