×
Traktatov.net » Язык программирования C [Лекции и упражнения, 6-е изд.] » Читать онлайн
Страница 522 из 557 Настройки

Булевский тип (С99)

Булевским типом в С99 является _Bool. Это целочисленный тин без знака, который может принимать одно из двух значений: 0 для обозначения лжи и 1 — для истины. Включение заголовочного файла stdbool.h позволяет использовать bool вместо _Bool, true — вместо 1 и false — вместо 0, что обеспечивает совместимость кода с C++.

Вещественные и комплексные типы с плавающей запятой

Стандарт С99 выделяет две области типов с плавающей запятой: вещественные и комплексные. Вместе они образуют типы с плавающей запятой.

Вещественные числа с плавающей запятой могут иметь положительные и отрицательные значения. В языке С распознаются три вещественных типа с плавающей занятой.

•   float — базовый тип с плавающей запятой. Может представлять как минимум шесть значащих цифр. Обычно занимает 32 бита.

•   double — (возможно) более крупная единица хранения чисел с плавающей запятой. Может допускать больше значащих цифр и, возможно, большие экспоненты, чем тип float. Может представлять, по меньшей мере, 10 значащих цифр. Обычно занимает 64 бита.

•   long double — (возможно) еще более крупная единица хранения чисел с плавающей запятой. Может допускать больше значащих цифр и, возможно, большие экспоненты, чем тип double.

Комплексные числа имеют два компонента: действительную часть и мнимую часть. Стандарт С99 внутренне представляет комплексное число в виде двухэлементного массива, в котором первый элемент является действительной частью, а второй — мнимой частью. Существуют три типа комплексных чисел.

•   float _Complex — представляет действительную и мнимую части с помощью значений типа float.


Приложение Б

•   double _Complex — представляет действительную и мнимую части с помощью значений типа double.

•   long double _Complex — представляет действительную и мнимую части с помощью значений типа long double.

В каждом случае тип в префиксе называется соответствующим вещественным типом. Например, соответствующим вещественным типом в double_Complex является double.

В стандарте С99 комплексные типы были необязательными для автономных сред, в которых программы С могли выполняться без операционной системы. В стандарте С11 комплексные типы необязательны и для автономных, и для размещаемых сред.

Существуют также три мнимых типа; они необязательны как для автономных сред, так и для размещаемых сред (сред, в которых программы С выполняются под управлением операционной системы). Мнимое число имеет только мнимую часть.

Ниже приведен список мнимых типов.

•    float Imaginary — представляет мнимую часть с помощью значений типа

float.

•    double _Imaginary — представляет мнимую часть с помощью значений типа

double.

•   long double _Imaginary — представляет мнимую часть с помощью значений типа long double.

Комплексные числа могут быть инициализированы с применением вещественных чисел и значения I, которое определено в complex.h и представляет i, т.е. квадратный корень из -1:

#include // для I

double _Complex z = 3.0;   // действительная часть =3.0, мнимая часть = 0

double _Complex w = 4.0 * I; // действительная часть = 0.0, мнимая часть = 4.0