Return 0;. По принятому в Си соглашению, ветвь else всегда относится к ближайшему предшествующему ему незанятому if:
}
По принятому в Си соглашению, ветвь else всегда относится к ближайшему предшествующему ему незанятому if:
if (n>0)
if (m % n > 2)
m -= n;
else m += n;
else m %= n;
В данном случае ветвь else m += n относится к if (m % n > 2), а ветвь
else m %= n относится к if (n > 0).
При переходе с Паскаля на Си программисты часто допускают ошибки при формировании условия в операторе if, путая две операции:
= присваивания и
== сравнения:
if (a==b)
printf(“\nЭти величины равны между собой”);
else printf(“\nЭти величины не равны между собой”);
Это правильное сравнение значений двух переменных.
Перепишем это сравнение с ошибкой (компилятором не определяется):
if (a=b)
printf(“\nЭти величины равны между собой”);
else printf(“\nЭти величины не равны между собой”);
В этом случае сначала переменной a будет присвоено значение переменной b, а потом будет проверено, какое именно значение присвоено. Если это значение отлично от нуля (неложь), то выведется сообщение:
Эти величины равны между собой
Если это значение равно нулю (ложь) – то сообщение:
Эти величины не равны между собой
Хотя и в этом случае обе переменные будут иметь одинаковые значения.
Часто встречающиеся ошибки программирования:
1. Использование else безпервой ветви:
if (n > m)
Дата добавления: 2015-10-19; просмотров: 621;