Основы программирования на языке C

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


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

/* занятость */ 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.



Содержание раздела