#c #function #scanf
Вопрос:
Каков точный смысл приведенного ниже утверждения,
if (scanf("%lf", amp;x) != 1)
Я попытался ввести числа, условие истинно,в противном случае, когда я ввожу не числовой символ, такой как «a», условие ложно.
Не могли бы вы рассказать мне больше о стоимости scanf()
и стоимости 1
?
Ответ №1:
Документация по scanf()
моей системе гласит:
Эти функции возвращают количество успешно сопоставленных и назначенных входных элементов, которое может быть меньше, чем предусмотрено, или даже равно нулю в случае ранней ошибки сопоставления.
Таким образом, результат scanf()
в вашем случае равен 1, если было найдено число с плавающей запятой, в противном случае оно равно 0. Тело if
инструкции выполняется, если возвращаемое значение не ( !=
) равно единице.
Ответ №2:
man scanf
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Эти функции возвращают количество успешно сопоставленных и назначенных входных элементов, которое может быть меньше, чем предусмотрено, или даже равно нулю в случае ранней ошибки сопоставления.
Значение EOF возвращается, если конец ввода достигнут до первого успешного преобразования или произойдет сбой сопоставления. EOF также возвращается, если возникает ошибка чтения, и в этом случае устанавливается индикатор ошибки для потока (см. ferror(3)), а значение errno указывает на ошибку.
Ответ №3:
если (scanf(«%lf», amp;x) != 1)
Если вы введете число 1 в качестве входных данных, ваше условие должно быть ЛОЖНЫМ;
«%lf » — это спецификатор преобразования, который преобразует ваше числовое значение в число с плавающей запятой
когда ваш ввод является нечисловым (т. Е. «A» или «Z» или «{» и т. Д.) Ваш компилятор не знает, как преобразовать символ в действительное число.
scanf считывает данные, введенные пользователем через стандартное устройство ввода, и сохраняет их в переменной, имя и тип данных которой определяются программистом