static const bool traps = true;
static const bool tinyness_before = true;
static const float_round_style round_style =
round_to_nearest;
};
В заголовках
и
определены макросы, определяющие основные свойства целых чисел и чисел с плавающей точкой.
Б.9.2. Стандартные математические функции
В стандартной библиотеке определены основные математические функции (в заголовках
и
).
Существуют версии этих функций, принимающие аргументы типа float
, double
, long double
и complex
. У каждой из этих функций тип возвращаемого значения совпадает с типом аргумента.
Если стандартная математическая функция не может выдать корректный с математической точки зрения результат, она устанавливает переменную errno
.
Б.9.3. Комплексные числа
В стандартной библиотеке определены типы для комплексных чисел complex
, complex
и complex
. Класс complex
, где Scalar
— некий другой тип, поддерживающий обычные арифметические операции, как правило, работоспособен, но не гарантирует переносимости программ.
template
// комплексное число — это пара скалярных значений,
// по существу — пара координат
Scalar re, im;
public:
complex(const Scalar & r, const Scalar & i):re(r), im(i) { }
complex(const Scalar & r):re(r),im(Scalar ) { }
complex:re(Scalar ), im(Scalar ) { }
Scalar real { return re; } // действительная часть
Scalar imag { return im; } // мнимая часть
// операторы : = += –= *= /=
};
Кроме этих членов, в классе
предусмотрено много полезных операций.
Кроме того, к комплексным числам можно применять стандартные математические функции (см. раздел Б.9.2). Примечание: в классе complex
нет операций <
или %
(см. также раздел 24.9).
Б.9.4. Класс valarray
Объект стандартного класса valarray
— это одномерный массив чисел; иначе говоря, он предусматривает арифметические операции для массивов (аналогично классу Matrix
из главы 24), а также срезы (slices) и шаги по индексу (strides).
Б.9.5. Обобщенные числовые алгоритмы
Эти алгоритмы из раздела
обеспечивают общие варианты типичных операций над последовательностями числовых значений.
Б.10. Функции стандартной библиотеки языка С
Стандартная библиотека языка С включена в стандартную библиотеку языка С++ с минимальными изменениями. В ней предусмотрено относительно небольшое количество функций, полезность которых подтверждена многолетним опытом использования в разнообразных предметных областях, особенно в низкоуровневом программировании. Библиотека языка С разделена на несколько категорий.
• Ввод-вывод в стиле языка C.
• Строки в стиле языка C.
• Управление памятью.
• Дата и время.
• Остальное.
Библиотека языка С содержит намного больше функций, чем описано в этой книге; рекомендуем читателям обратиться к хорошим учебникам по языку С, например, к книге Kernighan, Ritchie,
Б.10.1. Файлы
Система ввода-вывода, описанная в заголовке
, основана на файлах. Указатель на файл (FILE*
) может относиться как к файлу, так и к стандартным потокам ввода и вывода, stdin
, stdout
и stderr
. Стандартные потоки доступны по умолчанию; остальные файлы должны быть открыты явным образом.
Режим — это строка, содержащая одну или несколько директив, определяющих, как именно должен быть открыт файл.
В конкретной операционной системе может быть (и, как правило, так и есть) больше возможностей. Некоторые режимы могут комбинироваться, например, инструкция fopen("foo","rb")
пытается открыть файл foo
для чтения в бинарном режиме. Режимы ввода-вывода для потоков из библиотек stdio
и iostream
должны быть одинаковыми (см. раздел Б.7.1)
Б.10.2. Семейство функций printf
Наиболее популярными функциями в стандартной библиотеке языка С являются функции ввода-вывода. Тем не менее рекомендуем использовать библиотеку iostream
, потому что она безопасна с точки зрения типов и допускает расширение. Функция форматированного вывода printf
используется очень широко (в том числе и в программах на языке C++) и часто имитируется в других языках программирования.
В каждой версии число n
— это количество записанных символов, а в случае неудачи — отрицательное число. На самом деле значение, возвращаемое функцией printf
, практически всегда игнорируется.
Объявление функции printf
имеет следующий вид: