Функции, возвращающие нецелые значе 17417p152r ния
while getline line maxline) > 0)
Если некоторое имя, которое не было описано ранее, появляется в выражении и за ним следует левая круглая скобка, то оно по контексту считается именем некоторой функции. Кроме того, по умолчанию предполагается, что эта функция возвращает значе 17417p152r ние типа int char int char
Но что происходит, если функция должна возвратить значе 17417p152r ние какого-то другого типа? Многие численные функции, такие как sqrt sin cos double - значе 17417p152r ние с плавающей точкой, с двойной точностью. Другие специальные функции возвращают значе 17417p152r ния других типов. Чтобы показать, как поступать в этом случае, давайте напишем и используем функцию atоf(s) s
atоf атоi, варианты которой мы написали в главах 3 и 4; она обрабатывает необязательно знак и десятичную точку, а также целую и дробную часть, каждая из которых может как присутствовать, так и отсутствовать (эта процедура преобразования ввода не очень высокого каче 17417p152r ства; иначе 17417p152r она бы заняла больше места, чем нам хотелось бы).
atоf должна описывать тип возвращаемого ею значе 17417p152r ния, поскольку он отличен от int float double atоf float полагаем, что возвращаемое значе 17417p152r ние типа double
// Преобразование строки s в число с двойной точностью
double atof(char s[])
return(sign * val / power);
atof возвращает значе 17417p152r ние, отличное от int который считывает по одному числу на строку, причем это число может иметь знак, и складывает все числа, печатая сумму после каждого ввода.
#define maxline 100
main() // Примитивный калькулятор
double sum atof
sum double atof является функцией, возвращающей значе 17417p152r ние типа double. Эта мнемоника означает, что значе 17417p152r ниями как sum atof(...)
atof не будет описана явно в обоих местах, то в «C» предполагается, что она возвращает целое значе 17417p152r ние, и вы получите бессмысленный ответ. Если сама atof main atof atof будет возвращать значе 17417p152r ния типа double main int, что приведет к бессмысленным результатам (программа Lint вылавливает такую ошибку).
atof atoi int
atoi(char s[]) // Преобразование строки в целое число
return. Значе 17417p152r ние выражения в конструкции:
return (выражение)
return значе 17417p152r ние функции atof double int atoi int. (Как обсуждалось в главе 3, преобразование значе 17417p152r ния с плавающей точкой к типу int
atof где за числом с плавающей точкой может следовать
|