Читаем Программирование. Принципы и практика использования C++ Исправленное издание полностью

  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 class complex {

  // комплексное число — это пара скалярных значений,

  // по существу — пара координат

  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, The C Programming Language (K&R).

Б.10.1. Файлы

Система ввода-вывода, описанная в заголовке , основана на файлах. Указатель на файл (FILE*) может относиться как к файлу, так и к стандартным потокам ввода и вывода, stdin, stdout и stderr

. Стандартные потоки доступны по умолчанию; остальные файлы должны быть открыты явным образом.



Режим — это строка, содержащая одну или несколько директив, определяющих, как именно должен быть открыт файл.



В конкретной операционной системе может быть (и, как правило, так и есть) больше возможностей. Некоторые режимы могут комбинироваться, например, инструкция fopen("foo","rb") пытается открыть файл foo для чтения в бинарном режиме. Режимы ввода-вывода для потоков из библиотек stdio и iostream должны быть одинаковыми (см. раздел Б.7.1)

Б.10.2. Семейство функций printf

Наиболее популярными функциями в стандартной библиотеке языка С являются функции ввода-вывода. Тем не менее рекомендуем использовать библиотеку iostream, потому что она безопасна с точки зрения типов и допускает расширение. Функция форматированного вывода printf используется очень широко (в том числе и в программах на языке C++) и часто имитируется в других языках программирования.



В каждой версии число n — это количество записанных символов, а в случае неудачи — отрицательное число. На самом деле значение, возвращаемое функцией printf, практически всегда игнорируется.

Объявление функции printf имеет следующий вид:


Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже