Осложнение с понятием истина
Рассмотрим следующую программу:
/* занятость */ 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.