Итак, чему же все-таки соответствует истина?

Итак, чему же все-таки соответствует истина?

     Мы можем использовать 1 и 0 в качестве проверочных значений оператора if. Спрашивается, можем ли мы использовать другие числа. Если да, то что при этом происходит? Давайте проведем эксперимент.

/* if - тест */

main( )

{

if (200)

    printf("200 - это истина. ");

if(-33)

    printf(" -33 - это истина ");

}

Pезультаты выглядят так

200 - это истина

-33- это истина

     Очевидно, в языке Си числа 200 и -33 тоже рассматриваются как "истина". И действительно, все ненулевые величины принимаются в качестве "истины" и только 0 - как "ложь". В языке Си понятие истины оказывается чрезвычайно растяжимым.

     Многие программисты обычно пользуются этим определением истинности. Например, строку

if(goats !=0)

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

if(goats)

поскольку выражение (goats != 0) и выражение (goats) оба примут значение 0, или "ложь", только в том случае, если значение переменной goats равно 0. Мы думаем, что смысл второй формы записи менее очевиден, чем первой. Однако в результате компиляции она оказывается более эффективной, так как при реализации про граммы требует меньшего числа машинных операций.