#c
#c
Вопрос:
Я не знаю, почему после scanf() есть a> -1!
while(scanf("%f %f %f %f", amp;x1,amp;x2,amp;y1,amp;y2)>-1 amp;amp; (x1!=0 amp;amp; x2!=0 amp;amp; y1!=0 amp;amp; y2!=0) )
{
x=x1/x2;
y=y1/y2;
Комментарии:
1. Пожалуйста, прочитайте о том, что
scanf
возвращает .2. Проверяется, является ли возвращаемое значение scanf неотрицательным.
3. Примечание: этот код кажется сомнительным. Правильный код проверил бы полный успех
== 4
, а не частичный успех>-1
.4. @user694733 Это не побочное примечание. Вы просто скромничаете, на самом деле это одна из важнейших частей.
5. @Someprogrammerdude возможно, они были инициализированы перед циклом. мы не знаем и не представляем, что происходит в цикле перед следующим
scanf
Ответ №1:
В случае успеха scanf возвращает количество успешно назначенных аргументов. Если ошибка в СОПОСТАВЛЕНИИ происходит до назначения первого аргумента, scanf возвращает 0, а если ошибка ввода происходит до назначения первого аргумента, возвращается EOF. А теперь ответ на ваш вопрос: EOF расширяется до -1, поэтому ваше значение while примерно такое while(«ошибка ввода в scanf отсутствует()» amp;amp;….).