|
Программирование >> Процедурные приложения
Числа с плавающей запятой одинарной точности (тип данных float) могут представляться как в фиксированном формате, например число л (3,14159), так и в экспоненциальном (7,56310). Диапазон значений - +/-3,4Е-38-3,4Е+38, размерность - 32 бита, т.е. 4 байта, или 2 слова. Числа с плавающей запятой двойной точности (тип данных double) имеют диапазон значений от +/-1,7Е-308 до +/-1,7Е+308 и размерность 64 бита, т.е. 8 байтов, или 4 слова. Ранее существовал тип longdouble с размерностью 80 бит и диапазоном от +/-1,18Е-4932 до +/-1Д8Е+4932. В новых 32-разрядных версиях компиляторов он эквивалентен типу double и поддерживается из соображений обратной совместимости с написанными ранее приложениями. Перечисления представляются конечным набором именованных констант различных типов. Тип данных void, как правило, применяется в функциях, не возвращающих никакого значения. Этот тип данных также можно использовать для создания обобщенных указателей, как будет показано в главе Указатели . Указатели, в отличие от переменных других типов, не содержат данных в обычном понимании этого слова. Вместо этого указатели содержат адреса памяти, где хранятся данные. Переменные нового типа данных bool в C++ могут содержать только одну из двух констант: true или false. Символы В каждом языке (не только компьютерном) используется определенный набор символов для построения значимых выражений. Например, в книгах, написанных на английском языке, используются комбинации из 26 букв латинского алфавита, десяти цифр и нескольких знаков препинания. Аналогично, выражения на языках С и C++ записываются с помощью 26 строчных букв латинского алфавита: abcdefghijklmnopqrstuvwxyz 26 прописных букв латинского алфавита: ABCDEFGHIJKLMNOPQRSTUVWXYZ. десяти цифр: 0123456789 и следующих специальных символов: + -*/=,. :;?\ ~!#%$&()[]{} @ К специальным символам относится также пробел. Комбинации некоторых символов, не разделенных пробелами, интерпретируются как один значимый символ: ++ - == && << >> >= <= +=-=*=/=?: /* */ В следующем примере программы на языке С показана работа с переменными типа char: * char. с * Эта программа на языке С демонстрирует работу с переменн1ми типа * char и показывает, как интерпретировать символьное значение * в целочисленном виде. #include <stdio.h> #include <ctype.h> int main() { char csinglechar, cuppercase, clowercase; printf( \nВведите одну букву: scanf( %c ,Scsinglechar); cuppercase = toupper(csinglechar); clowercase = tolower(csinglechar); printf( ВВЕРХНЕМ регистре буква \%с\имеет десятичный ASCII-код %d\n ,cuppercase, cuppercase); printf( ASCII-код в шестнадцатеричном формате равен %Х\п , cuppercase); printf( Если прибавить шестнадцать, то получится \%c\\n ,(cuppercase + 16)); printf( ASCII-код полученного значения в шестнадцатеричном формате равен %X\n ,(cuppercase + 16)); printf( ВНИЖНЕМ регистре буква \%с\ имеет десятичный ASCII-код%d\n ,clowercase, clowercase); return(0); } В результате работы программы на экран будет выведена следующая информация: Введите одну букву: d В ВЕРХНЕМ регистре буква Dимеет десятичный ASCII-код 68 ASCII-код в шестнадцатеричном формате равен 44 Если прибавить шестнадцать, то получится Т ASCII-код полученного значения в шестнадцатеричном формате равен 54 В НИЖНЕМ регистре буква d имеет десятичный ASCII-код 100 Спецификатор формата %X служит указанием отобразить значение переменной в шестнадцатеричном виде в верхнем регистре. Три типа целых чисел В C/C++ поддерживаются три типа целых чисел. Наравне со стандартным типом int существуют типы shortint (короткое целое) и longint (длинное целое). Допускается сокращенная запись short и long. Хотя синтаксис самого языка не зависит от используемой платформы, размерность типов данных short, intи long может варьироваться. Гарантируется лишь, что соотношение размерностей таково: short <= int <= long. В MicrosoftVisual C/C++ для переменных типа shortрезервируется 2 байта, для типов intHlong - 4 байта. Модификаторы signed и unsigned Компиляторы языков C/C++ позволяют при описании переменных некоторых типов указывать модификатор unsigned. В настоящее время он применяется с четырьмя типами данных: char, short, int и long. Наличие данного модификатора указывает на то, что значение переменной должно интерпретироваться как беззнаковое число, т.е. самый старший бит является битом данных, а не битом знака. Предположим, мы создали новый тип данных, my octal, в котором для записи каждого числа выделяется 3 бита. По умолчанию считается, что значения этого типа могут быть как положительными, так и отрицательными. Поскольку из 3-х доступных битов старший будет указывать на наличие знака, то диапазон возможных значений получится от -4 до 3. Но если при описании переменной типа my octal указать модификатор unsigned, то тем самым мы освободим первый бит для хранения полезной информации и получим диапазон возможных значений от 0 до 7. Аналогичные преобразования выполняются и для стандартных типов данных, как видно из табл. 5.2.
Модификаторы signed и unsigned могут использоваться с любыми целочисленными типами данных. Тип char по умолчанию интерпретируется как знаковый. Типы данных intи unsignedint имеют размерность системного слова: 2 байта в MS-DOS и 16-разрядных версиях Windows и 4 байта в 32-разрядных операционных системах. При построении переносимых программ не следует полагаться на конкретную размерность целочисленных типов. В то же время в компиляторе MicrosoftC/C++ поддерживается использование целых чисел фиксированной размерности, для чего введены типы intx. В табл. 5.3 показаны все возможные комбинации типов данных и модификаторов signed и unsigned.
Числа с плавающей запятой В C/C++ используется три типа данных с плавающей запятой: float, double и longdouble. Хотя в стандарте ANSI С не указан точный диапазон их значений, общепринято, что переменные любого из этих типов должны как минимум поддерживать диапазон от 1 Е-37 до 1 Е+37. Как видно из табл. 5.2, в MicrosoftVisual C/C++ возможности типов данных с плавающей запятой значительно превышают минимальные требования. Тип longdouble отсутствовал в первоначальном варианте языка и был предложен комитетом ANSI. Ранее, в 16-разрядных
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |