Основы программирования на C++, PASCAL
4.3. Типы данных
Концепция типов данных является важнейшей стороной любого языка программирования. Особенность Паскаля состоит в большом разнообразии типов, схематически представленном в разд. 3.4 на рис. 9. Аналогичная схема для языка Си++ представлена на рис. 42.
Сравнение схем приводит к выводу о том, что разнообразие типов данных в Си++ меньше, чем в Турбо Паскале.
В Си/Си++ имеется четыре базовых арифметических (числовых) типа данных. Из них два целочисленных — char, int — и два плавающих (вещественных) — float и double. Кроме того, в программах можно использовать некоторые модификации этих типов, описываемых с помощью служебных слов — модификаторов. Существуют два модификатора размера — short (короткий) и long (длинный) — и два модификатора знаков — signed (знаковый) и unsigned (беззнаковый). Знаковые модификаторы применяются только к целым типам.
Как известно, тип величины связан с ее формой внутреннего представления, множеством принимаемых значений и множеством операций, применимых к этой величине. В табл. 4.1 перечислены арифметические типы данных Си++, указан объем занимаемой памяти и диапазон допустимых значений.
Размер типа int и unsigned int зависит от размера слова операционной системы, в которой работает компилятор Си++. В 16-разрядных ОС (MS DOS) этим типам соответствуют 2 байта, в 32-разрядных (Windows) — 4 байта.
Таблица 4.1
Анализируя данные табл. 4.1, можно сделать следующие выводы:
• если не указан базовый тип, то по умолчанию подразумевается int;
• если не указан модификатор знаков, то по умолчанию подразумевается signed;
• с базовым типом float модификаторы не употребляются;
• модификатор short применим только к базовому типу int. Программисту, работавшему на Паскале, покажется странным, что тип char причислен к арифметическим типам. Ведь даже его имя указывает на то, что это символьный тип! В Си/Си++ величины типа char могут рассматриваться в программе и как символы, и как целые числа. Все зависит от контекста, т. е. от способа использования этой величины. В случае интерпретации величины типа char как символа ее числовое значение является ASCII-кодом. Следующий пример иллюстрирует сказанное.
char a= 6 5 ;
printf("%c",a);/*На экране появится символ А*/
printf("%d",a);/*На экране появится число 65*/
Символы "%c" являются спецификацией формата ввода/вывода символьных данных, а "%d" — спецификацией для целых чисел.