Шрифт:
ПРИМЕР:
if(legs == 4)
printf("Это, возможно, лошадь. \n");
else if (legs > 4)
printf(" Это не лошадь. \n");
else /* случай, когда legs < 4 */
{ legs++;
printf(" Теперь животное имеет еще одну ногу.\n");
}
ЧТО ВАЖНЕЕ: ОПЕРАЦИИ ОТНОШЕНИЯ ИЛИ ВЫРАЖЕНИЯ
Операции отношения используются для сравнений. Мы уже использовали ранее некоторые из них, а сейчас приведем полный список операций отношения, применяемых при программировании на языке Си.
| Операция: | Смысл: |
|---|---|
| < | меньше |
| <= | меньше или равно |
| = = | равно |
| >= | больше или равно |
| > | больше |
| != | не равно |
Этот список довольно хорошо соответствует возможным числовым соотношениям. (Вообще говоря, числа, даже комплексные, менее сложны, чем люди). Главное предостережение, которое мы хотим сделать, состоит в том, чтобы не использовать знак = вместо = =. В некоторых языках программирования (например. Бейсике) один и тот же знак используется и для операции присваивания, и для операции отношения "равенство", хотя они совершенно различны. С помощью операции присваивания некоторое значение присваивается переменной слева от знака равенства. В то же время с помощью операции отношения "равенство" проверяется равно ли выражение, стоящее слева от знака, выражению справа от него. Эта операция не изменяет значения переменной в левой части, если она там присутствует.
canoes = = 5 проверяет, равняется ли значение переменной canoes 5
Что такое истина?
Каждое условное выражение проверяется "истинно" ли оно или ложно. При этом возникает интересный вопрос: Что такое истина?
Мы можем ответить на этот вечный вопрос по крайней мере так, как он решен в языке Си. Напомним, во-первых, что выражение в Си всегда имеет значение. Это утверждение остается вepным даже для условных выражений, как показывает пример, приведенный ниже. В нем определяются значения двух условных выражений, одно из которых оказывается истинным, а второе - ложным.
/* истина и ложь*/
main
{
int true, false;
true = (10 > 2); /* отношение истинно */
false = (10 = =2); /* отношение ложно */
printf("true = %d; false = %d\n" , true, false);
}
В данном примере значения двух условных выражений присваиваются двум переменным. Чтобы не запутать читателя, мы присвоили переменной true значение выражения, которое оказывается истинным, а переменной false– значение выражения, которое оказывается ложным. При выполнении программы получим следующий простой результат:
true = 1; false = 0
Вот как! Оказывается, в языке Си значение "истина" - это 1, a "ложь" - 0. Мы можем это легко проверить, выполнив программу, приведенную ниже.
/* проверка истинности */
main
{
if(1)
printf(" 1 соответствует истине.\n" );
else
printf(" 1 не соответствует истине. \n");
if(0)
printf(" 0 не означает ложь. \n");
else
printf(" 0 означаетложь. \n");
}
Мы скажем, что 1 должна рассматриваться как истинное утверждение, а 0 - как ложное. Если наше мнение верно, то в первом операторе if должна выполниться первая ветвь (ветвь if, а во втором операторе if– вторая (ветвь else). Попробуйте запустить программу, чтобы узнать, правы ли мы.
Итак, чему же все-таки соответствует истина?
Мы можем использовать 1 и 0 в качестве проверочных значений оператора if. Спрашивается, можем ли мы использовать другие числа. Если да, то что при этом происходит? Давайте проведем эксперимент.
/* if - тест */
main
{
if (200)
printf("200 - это истина. \n");