Я не знаю, почему после scanf () есть> -1!
while(scanf("%f %f %f %f", &x1,&x2,&y1,&y2)>-1 && (x1!=0 && x2!=0 && y1!=0 && y2!=0) ) { x=x1/x2; y=y1/y2;
В случае успеха scanf возвращает количество успешно назначенных аргументов. Если в MATCHING происходит сбой до назначения первого аргумента, scanf возвращает 0 и если сбой INPUT происходит до назначения первого аргумента, возвращается EOF. А теперь ответ на ваш вопрос: EOF расширяется до -1, поэтому ваш while - это что-то вроде while («нет ошибки ввода в scanf ()» && ....).