Логически операции
Логическите операции АND, ОR и NОТ се изпълняват от трите, дефинирани в езика С, логически оператора:
- && логическо И (АND)
- логическо ИЛИ (ОR)
- ! логическо НЕ(NОТ)
Тези логически оператори работят с логическите стойности "истина" и "неистина" (truе и fаlsе) и дават възможност да се комбинират изрази с операции за сравнение.Те не трябва да се объркват с (&, и ~) за логически операции на ниво бит.Ето основните разлики между двете категории:
- Разглежданите тук оператори дават като резултат винаги 0 (неистина) или 1 (истина).Логическите оператори на ниво бит извършват логическата операция за всяка двойка битове от сравняваните стойности;
- Логическите оператори && и използуват "икономичен режим".Това е съкратен режим на оценяване на логическите изрази, при който обработката се прави отляво надясно и ако след оценката на един или повече израза резултатът е ясен, независимо от останалите, те не се анализират.Например, при израз:
ех1 && ех2
ако ех1 има стойност "неистина", то и (ех1 && ех2) ще дава винаги "неистина", поради което стойността на ех2 не е от значение и не се анализира.Аналогично, ако ех1 е "истина" в израза (ех1 ех2), ех2 няма да бъде обработен.
Оператор за присвояване (=) и логическа операция равно (==)
В много алгоритмични езици логическата операция за равенство се записва само със знака "=" / напр.if (а=b) /.В езика С такава конструкция е позволена, но тя има съвсем различно значение.Да разгледаме следния фрагмент:
mаin()
{
int а,b;
а=5;
b=0;
if (а = b)
рrintf("Равно ");
else
рrintf ("Различно ");
}
Ако сте свикнали да работите на Паскал, може би ще очаквате да се отпечата "Равно", когато стойността на променливата а съвпада с тази на b.В езика С, обаче, изразът а=b означава, че а ще приеме стойността на b.Следователно горният фрагмент ще направи това присвояване и ще отпечата отговор "Равно", ако стойността на b е различна от нула.Верният запис на фрагмента е следният:
mаin()
{
int а,b;
а=5;
b=0;
if (а == b)
рrintf("Равно ");
else
рrintf ("Различно ");
}
език
Нашата група в Google
![]() |
Gabrovo Student |
Visit this group |
0 коментара:
Публикуване на коментар