Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛекцииЯзыки прогрИб.doc
Скачиваний:
27
Добавлен:
12.11.2019
Размер:
922.11 Кб
Скачать

5.2. Стандартные типы данных и операции над ними

Типы данных классифицируются на базовые типы, указатели, ссылки, массивы, типы, определяемые пользователем (структуры, объединения, перечисления).

Стандартные типы данных и константы

Стандартные (базовые) типы бывают целые, вещественные, символьные, используют стандартные идентификаторы типов:

Короткое целое short int -32768÷32767

Целое int -32768÷32767

Неотрицательное целое unsigned int 0÷65535

Длинное целое long -2*109÷2109

Неотрицат. длинное целое unsigned long 0÷4*109

Веществ.одинарной точности float 3.4*10-38÷3.4*1038

Веществ. двойной точности double 1.7*10-308÷1.7*10308

Веществ. высокой точности long double 3.4*10-4932÷3.4*104932

Символ (один байт) char -128÷127

Беззнаковый символ unsigned char 0÷255

Десятичные константы – любые числа без дробной части, не начинающиеся с нуля. Восьмеричные целые константы начинаются с нуля. Шестнадцатиричные константы начинаются с 0x. Для констант с плавающей точкой можно опустить либо десятичную точку, либо Е, но не то и другое. Символьная константа – это один символ, заключенный в одинарные кавычки (апострофы). Они имеют числовые значения, равные кодам ASCII соответствующих символов. Примеры:

29, -3, +4569 //целые константы

01, 023, 0407 //восьмеричные

0x1a, 0x10, 0x2F //шестнадцатиричные

3.14, 2e3, 3.4E-5, 10., .9 //вещественные

‘a’, ‘9’, ‘-‘ //символьные

Символьные константы могут вводить управляющие последовательности для преобразования определенных символов, не имеющих графического аналога:

Одинарная кавычка ' '\''

Ноль (пустой символ) NUL '\0'

Звуковой сигнал(звонок) BEL '\a'

Возврат на шаг(забой) BS '\b'

Новая строка(перевод строки) LF '\n'

Возврат каретки CR '\r'

Горизонтальная табуляция HT '\t'

Обратная косая черта \ '\\'

Двойная кавычка " '\"'

Байтовое значение в восьмеричной системе '\ddd'

Байтовое значение в шестнадцатиричной системе '\xdd'

Строковая константа - это ноль и более символов, заключенных в двойные кавычки, имеет тип массив символов (char), содержит в конце добавляемый автоматически символ ноль '\0'. Нулевая (пустая строка) записывается в виде "" и хранится в виде одного символа '\0'. Константы могут быть записаны в нескольких строках. Последний символ переносимой строки - это \ ,он и символ новой строки отбрасываются при выводе данных. Соседние строковые константы, разделенные только пробелами, конкатенируются.

Преобразование и переименование типов

Язык С++ допускает преобразование ( приведение ) типов и переименование типов.

Возможны неявные(стандартные) и явные преобразования типов.

Неявные преобразования выполняются компилятором автоматически следующим образом:

  • в выражениях операнды преобразуются к одинаковому типу по схеме: char->short int->unsigned int->long->unsigned long->float->double->long double;

  • в операторах присваивания правая часть преобразуется к типу левой части.

Явное преобразование типов выполняется специальной операцией приведения типа, имеющей 2 формы записи:

(tip) expr; -используется в С и С++;

tip(expr); - функциональная форма, введена в С++.

Формы почти равноценны, и их выбор -это дело вкуса.

Переименование типа проводится объявлением нового идентификатора типа данных, синонима существующего типа, с целью использования более удобного или сокращённого названия. Синтаксис:

typedef tip ident;

,где tip -существующий тип данных;

ident -идентификатор-синоним.

Пример: typedef unsigned int t;

unsigned int x;//Длинное t x;//Короткое название

unsignet int y;//название t y;

Операции

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

-арифметические операции: сложение (+), вычитание (-), умножение (*), деление (/), остаток от деления (% ,для целых и символов), унарные операции (+ и -);

-логические операции: НЕ (!),ИЛИ (||),И (&&);

-операции отношения: равно (==), не равно (!=), меньше (<), меньше или равно (<=), больше (>), больше или равно (>=);

-операции инкремента и декремента (для целых и символов): постфиксный инкремент (expr++) - увеличение expr на единицу, результатом всего выражения является значение expr до увеличения;

пример: m=1;

n=m++; //m=2,n=1

префиксный инкремент (++expr) - увеличение на единицу, результатом всего выражения является значение expr после увеличения;

пример: m=1;

n=++m; //m=2,n=2

постфиксный декремент (expr--) - уменьшение expr на единицу, результатом всего выражения является значение expr до уменьшения;

пример: m=2;

n=m--; //m=1,n=2

префиксный декремент (--expr) - уменьшение expr на единицу, результатом всего выражения является expr поле уменьшения;

пример: m=2;

n=--m; //m=1,n=1

-побитовые операции(для целых и символов): дополнение до единицы (~), побитовое ИЛИ (|), побитовое И (&), побитовое исключающее ИЛИ (^), сдвиг вправо (>>), сдвиг влево (<<);

-операции присваивания: присвоить (=), сочетание с арифметическими и битовыми логическими операциями (+=, -=, *=, /=, %=, |=, &=, ^=; >>=, <<=);

примеры: m+=n; //Сокращенная запись m=m+n;

x=y=z;//Множественное присваивание x=(y=(z=0));

-условная операция арифметическое если (?:): expr1?expr2:expr3- если expr1 истинно, то вычисляется expr2, и результатом является expr2; иначе вычисляется expr3, и результатом является expr3;

пример: y=(x<=0)?-x:x;//y - абсолютное значение x

-операция последовательного выполнения, операция запятая (,): expr1, expr2 -сначала вычисляется expr1,затем expr2, результат операции - expr2; операция обычно используется для выполнения нескольких выражений в ситуациях, где по синтаксису может быть лишь одно.

Приоритет операций в порядке убывания следующий:

1) () -вызов функции;

2) !, ~, +, -, ++, --, () -логическое НЕ, дополнение до единицы, унарные операции, инкремент, декремент, операция приведения типа;

3) *, /, % -мультипликативные операции;

4) +, - -сложение, вычитание;

5) <<, >> -сдвиг;

6) <, >, <=, >= -операции отношения;

7) ==, != -операции отношения;

8) & -побитовое И;

9) ^ -побитовое исключающее ИЛИ;

10) | -побитовое ИЛИ;

11) && -логическое И;

12) || -логическое ИЛИ;

13) ?: -условная операция;

14) =,+=,-=,*=,/=,%=,>=,<=,&=,^=,|= -операции присваивания;

15) , -операция запятая.

Над данными базовых типов можно выполнять стандартные библиотечные функции, сгруппированные в файлы, например:

math.h - математические функции;

string.h - функции обработки строк;

ctype.h - функции для проверки и обработки символов;

stdlib.h - преобразование символов и строк в числа и обратно;

conio.h - библиотека видеофункций;

iostream.h - базовая библиотека ввода/вывода потоком С++.

Переменные базовых типов, используемые в качестве параметров функций, применяют способ передачи параметров по значению, т.е. копируются в стек и передаются функции копии самих значений переменных. Это допустимо, так как эти данные небольшого объема.