Array M. УЭИТ - Язык Си - руководство для начинающих

Здесь есть возможность читать онлайн «Array M. УЭИТ - Язык Си - руководство для начинающих» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 1988, ISBN: 1988, Издательство: Мир, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Язык Си - руководство для начинающих: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Язык Си - руководство для начинающих»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

M. УЭИТ   С. ПРАТА    Д. МАРТИН
Язык Си — руководство для начинающих

Язык Си - руководство для начинающих — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Язык Си - руководство для начинающих», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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");

if(-33)

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

}

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

200 - это истина

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

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

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

if(goats !=0)

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

if(goats)

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

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

Растяжимость понятия истина в языке Си может привести и к неприятностям. Рассмотрим следующую программу:

/* занятость */

main( )

{

int age = 20;

while(age++ <= 65)

{ if((age % 20) = =0) /* делится ли возраст на 20 ? */

printf(" Вам %d. Поздравляем с повышением!\n", age);

if (age = 65)

printf(" Вам %d. Преподносим Вам золотые часы \n", age);

} }

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

Вам 40. Поздравляем с повышением

Вам 60. Поздравляем с повышением

Вам 65. Преподносим Вам золотые часы

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

Вам 65. Преподносим Вам золотые часы

Вам 65. Преподносим Вам золотые часы

Вам 65. Преподносим Вам золотые часы

Вам 65. Преподносим Вам золотые часы

Вам 65. Преподносим Вам золотые часы

и т. д.- до бесконечности.

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

if (agе= 65)

вместо

if (age == 65)

Последствия ошибки оказались катастрофическими. Когда в процессе выполнения программа достигает указанного оператора, она проверит выражение ( аgе = 65). Это выражение, включающее в себя опреацию присваивания, имеет значение, которое совпадает со значением переменной, расположенной слева от знака, т.е. с 65 (в любом случае). Поскольку 65 не равно нулю, выражение считается истинным" и выполняется команда вывода на печать. Затем, когда в программе происходит передача управления на команду проверки условия в цикле while, значение переменной аgепо-прежнему равно 65, что меньше или равно 65. Условие оказывается истинным и величина аgеувеличивается до 66 (ввиду наличия операции увеличения ++в постфиксной форме), и тело цикла выполняется еще раз. Прекратится ли его выполнение на следующем шаге? Должно было бы, поскольку величина аgетеперь больше, чем 65. Когда программа опять попадает на наш ошибочный оператор ifпеременная аgеснова получит значение 65. В результате сообщение будет напечатано еще раз, затем тело цикла выполнится еще раз, и т.д. - до бесконечности (Конечно, если вы в конце концов не захотите остановить программу).

Подводя итоги, можно сказать, что операции отношения используется для образования условных выражений. Условное выражение имеет значение "1", когда оно истинно, и "0", если оно ложно. В операторах (таких как whileи if), где обычно используются условные выражения для задания проверяемых условий, могут применяться любые выражения, причем ненулевое значение является истиной", а нуль - "ложью".

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Язык Си - руководство для начинающих»

Представляем Вашему вниманию похожие книги на «Язык Си - руководство для начинающих» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Язык Си - руководство для начинающих»

Обсуждение, отзывы о книге «Язык Си - руководство для начинающих» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x