Четвер, 25.04.2024, 01:56
Гость

Мішатронік

Мобільна версія | Додати у вибране  | Мій профіль | Вихід | RSS |
Меню сайту
Наше опитування
Яка мова вам ближче?
Всього відповідей: 11
Статистика

Онлайн всього: 1
Гостей: 1
Користувачів: 0


Что такое истина

Мы ответим на этот вопрос, как он решается в языке Си. В Си выражение всегда имеет значение. Это утверждение остается верным даже для условных выражений, как показывает пример, приведенный ниже. В нем определяются значения двух условных выражений, одно из которых оказывается истинным, а второе - ложным:

 
/* истина и ложь*/
main( )
{
 int true, false;
 true = (12 > 2); /*отношение истинно*/
 false = (12 == 2) ; /*отношение ложно*/
 printf("true = %d; false = %d\n",true,false);
}
 

При выполнении программы получим следующие результаты:

 
true = 1, false = 0.
 

В языке Си значение истина равно 1, а значение ложь равно 0. В языке Си все ненулевые значения являются истинными, и только0 являются ложью. Например, два оператора

 
if(i !=0 )
 

можно заменить на

 
if(i)
 

поскольку выражение (i !=0 ) и выражение (i) оба примут значения 0, или ложь, только в том случае, если значение переменной i равно 0.

 

Осложнение с понятием истина

Рассмотрим следующую программу:

 
/* занятость */
#include <stdio.h>
main( )
{
 int age =20;
 while (age++ <= 63) {
 /* делится ли возраст на 20*/
 if((age % 20) == 0) 
 printf(" Вам %d.\n", age);
 if(age = 63)
 printf("Вам уже %d.\n",age);
 }
}
 

Мы хотели написать программу, чтобы результат работы программы выглядел так:

 
Вам 40.
Вам 60.
Вам уже 63.
 

На самом деле выход будет таким:

 
Вам уже 63.
Вам уже 63.
Вам уже 63.
 

и т. д. - до бесконечности. Это произошло, потому что мы ошибочно написали

 
if(age = 63)
 

вместо

 
if(age == 63)
 

В операторе

 
if(age = 63)
 

переменной age присваивается значение 63, т. е. результат этого оператора - истина и выполняется оператор

 
printf("Вам %d.\n",age);
 

В операторе

 
while(age++ <= 63)
 

условие выполняется, и программа зацикливается.

 

Приоритеты операций отношения мы описали в лекции 3.

 

Логические операции

Иногда бывает полезным объединить два или более условных выражения. Например, нам нужно подсчитать, сколько символов не является пробелами, символами новая строка и табуляции. Напишем такую программу:

 
/* число символов */
main( )
{
 int ch;
 int count=0;
 while((ch=getchar( )) != EOF)
 if(ch !=' ' && ch != '\n' && ch != '\t')
 count++;
 printf("Всего %d непустых символов. \n", count);
}
 

Оператор, использующий логическую операцию и, обозначаемую &&. Смысл действий, осуществляемых оператором if, можно пояснить так:

 
Операция Смысл
&& И
|| ИЛИ
! НЕ
 

Если прочитанный символ - не пробел и не символ "новая строка", и не символ табуляции, то происходит увеличение значения переменной count на единицу. Все выражение будет истиннымесли указанные три условия - истинны . В языке Си имеются три логические операции.

 

Форма входа
Пошук
Друзі сайту
Календар
«  Квітень 2024  »
ПнВтСрЧтПтСбНд
1234567
891011121314
15161718192021
22232425262728
2930

Єдина Країна! Единая Страна!