Студопедия — Алфавит, базовые типы и описание данных
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Алфавит, базовые типы и описание данных






 

Алфавит языка включает практически все символы, имеющие­ся на стандартной клавиатуре компьютера:

· латинские буквы A...Z, a...z;

· цифры 0...9;

· знаки операций и разделители: { }, [ ], (),.,,, ->, &, *, +, –, ~,!, \, %,?,:,;, =, <, >, |, #, ^.

Некоторые операции обозначаются комбинациями символов; значения символов операций в ряде случаев зависят от контекста, в котором они употреблены.

Типы данных. Базовые (предопределенные) типы данных объ­единены в две группы: данные целого типа и данные с плавающей точкой (вещественные).

Данные целого типа - целые со знаком (signed) и целые без знака (unsigned). По числу разрядов, используемых для пред­ставления диапазона значений такого типа различают: обычные целые (int), короткие целые (short int) и длинные целые (long int). Символьные данные (char) также рассматриваются как целые и могут быть со знаком или без знака.

Константы целого типа записываются как наборы десятичных цифр, тип константы зависит от количества цифр в записи кон­станты и может быть уточнен добавлением в конце константы букв L или l (тип long), U или u (тип unsigned) или их сочета­ния:

321 - константа типа int,

5326u - константа типа unsigned int,

45637778 - константа типа long int,

2746L - константа типа long int.

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

0777 - константа типа int,

0453377 - константа типа long.

Целые константы можно записывать и в шестнадцатеричной системе счисления, в этом случае запись константы начинается с символов Ох или ОХ:

0x45F - константа типа int,

OxFFFFFFFF - константа типа unsigned long.

Константы char всегда заключаются в ка­вычки, значение константы задается знаком из используемо­го набора символов либо целой константой, которой предшеству­ет обратная косая черта: 'А', '\33', '\042', '\х1В'. Имеются и другие символы, которые могут указываться в качестве значений константы char:

· '\n' - новая строка;

· '\t' - горизонтальная табуляция;

· '\v' - вертикальная табуляция;

· '\r' - перевод каретки;

· '\f' - перевод страницы;

· '\а' - звуковой сигнал;

· '\’' - одиночная кавычка (апостроф);

· '\”' - двойная кавычка;

· '\\' - обратная косая черта.

Вещественные данные могут быть значениями одного из трех типов: float, double, long double. Диапазон значений каж­дого из этих типов зависит от используемого компилятора. Кон­станты вещественных типов записываются в естественной или экспоненциальной формах и по умолчанию имеют тип dou­ble, например 15.31, 1.43Е-3, 2345.1е4. При необходимости тип константы можно уточнить, записав в конце суффикс f или F для типа float, либо суффикс l или L для типа long double.

Объявление переменных. Внешнее определение, объявляющее переменные, состоит из необязательного спецификатора класса памяти, спецификаторов типа и списка деклара­торов-инициализаторов, каждый из которых объявляет идентифи­катор одной переменной и, возможно, значение, присваиваемое переменной при ее объявлении.

Внешнее определение заканчива­ется точкой с запятой:

int i, j, k; // Три переменных типа int без явной // инициализации

double х=1, у=2; //Две переменных типа double // с начальными значениями 1 и 2

char c1='0'; // Переменная типа char, ее // значение - код литеры 0

Текст, записанный в этих примерах после знаков //, является комментарием и служит только для документирования програм­мы. Такой комментарий может занимать лишь одну строку текста и допускается в текстах программ на C++. Комментарий, зани­мающий несколько строк, заключается в специальные скобки /* и */.

В качестве спецификаторов класса памяти во внешнем опреде­лении указывается одно из слов extern, static, typedef.

Спецификатор extern означает, что объявляемый объект принадлежит другому программному файлу, а здесь дается информация только о его имени и типе, и не должно при­сутствовать инициализирующее выражение.

Спецификатор static ограничивает область действия объявляемого имени дан­ным файлом или блоком, если объявление содержится в блоке.

Спецификатор typedef служит для присвоения имени описы­ваемому типу данных.

Если объявление объекта содержится внутри тела функции (локальное объявление), то можно указывать спецификаторы класса памяти register или auto.

Спецификатор register носит рекомендательный характер, компилятор пытается размес­тить данные этого класса в регистре процессора, если в текущий момент имеются свободные регистры.

Спецификатор auto при­нимается по умолчанию и поэтому явно не указывается; он озна­чает, что объект класса auto размещается в программном стеке при вызове функции.

В C++ предусмотрены константы, которым присваиваются собственные имена, - именованные константы. В описании име­нованной константы присутствует const, например;

const double Pi = 3.141592653;

Переменной, идентификатор которой объявлен с описателем const, нельзя присвоить иное значение, чем было установлено при объявлении идентификатора. Инициализирующее значение при объявлении константы является обязательным.

Наряду с базовыми целыми и вещественными типами различ­ных размеров в программе могут объявляться и использоваться данные типов, определяемых программистом: указатели, ссылки, данные перечисляемого типа.

Данные перечисляемого типа. Этот тип применяет­ся для данных целого типа, которые могут принимать ограничен­ный набор значений. Каждому значению соответствует собствен­ное имя-идентификатор и целое число, значение этого имени. Объявление перечисляемого типа строится по схеме:

enum идентификатор { список перечисления } деклараторы-инициализаторы;

Здесь идентификатор задает имя перечисляемого типа; список перечисления состоит из перечислителей, разделенных запятыми. Каждый перечислитель задается идентификатором и, возможно, целым значением типа char или int, например:

enum color { RED, GREEN, BLUE } en_color;

enum lex_type { CNST, VAR, OPER=3, FUNC };

Любой перечислитель по умолчанию имеет значение на 1 больше предыдущего. Если значение перечислителя не задано, первый из них получа­ет значение 0, а каждый последующий - значение, большее на 1. В C++ принято записывать идентифика­торы перечислителей прописными буквами. Имена перечислите­лей используются либо как именованные константы, либо для присваивания переменным перечисляемого типа.

Для ссылок на переменную того или иного типа в C++ служат указатели.

Указатель - это тип данного, значением которого является адрес другого объекта.

При объявлении указа­теля перед идентификатором записывается знак *(звездочка). Указатель мо­жет инициализироваться адресом данного, для получения адреса служит операция & (амперсанд):

double у;

double *px, *ру = & у;

Для указателей определены операции сравнения, сложения указателя с целым числом, вычитания двух указателей, а также операция индексирования ([ ]). Для обращения к переменной по указателю выполняется опе­рация разыменования, обозначаемая знаком*, напри­мер *ру =7.5.

При объявлении указателя может использоваться описатель const, например:

const int cc = 20;

const int *pc = & cc; // Можно инициализировать

// адресом константы

double *const delta = 0.001; // Указатель-константа

Ссылки на переменную. Кроме обычных переменных и указа­телей в C++ имеется тип ссылка на переменную, задающий для переменной дополнительное имя (псевдоним). Внутреннее пред­ставление ссылки такое же, как указателя, т.е. в виде адреса пере­менной, но обращение к переменной по ссылке записывается в той же форме, что и обращение по основному имени. Переменная типа ссылки всегда инициализируется заданием имени перемен­ной, к которой относится ссылка. При объявлении ссылки за име­нем типа записывается знак &:

int х;

int& px = х;

При таком описании операторы рх = 5 и х = 5 эквива­лентны.

Массивы. Из переменных любого типа могут образовываться массивы. При объявлении массива в деклараторе-инициализаторе за идентификатором массива задается число элементов массива в квадратных скобках:

int а[5]; // Массив из пяти элементов типа int

Индексы элементов массива всегда начинаются с 0, индекс по­следнего элемента на единицу меньше числа элементов в массиве. Массив может инициализироваться списком значений в фигурных скобках:

int t[4] = { 1, 2, 3, 4 };

При наличии списка инициализации, охватывающего все эле­менты массива, можно не указывать число элементов массива, оно будет определено компилятором:

int w[] = { 1, 2, 3 }; // Массив из трех элементов

Массивы с размерностью 2 и более рассматриваются как мас­сивы массивов и для каждого измерения указывается число эле­ментов:

Массивы типа char могут инициализироваться строковым литералом.

Строковый литерал - это последовательность любых символов, кроме кавычек и обратной косой черты, заключенных в кавычки. Если строковый литерал не умещается на одной строке, его можно прервать символом «\» и продолжить с начала сле­дующей строки. В стандарте C++ предусмотрена и другая воз­можность записи длинных литералов в виде нескольких записан­ных подряд строковых литералов. Если между строковыми лите­ралами нет символов, отличных от пробелов, такие литералы сливаются компилятором в один.

При размещении в памяти в конце строкового литерала добав­ляется символ «\0», т.е. нулевой байт. Строковый литерал применяется и для инициализации указателя на тип char:

char str1[11] = " Это строка", str2[] =" Размер этого массива определяется числом знаков в литерале + 1";

char *pstr = " Указатель с инициализацией строкой";

Имя массива в C++ является указателем-константой, ссылаю­щимся на первый элемент массива, имеющий индекс, равный нулю. Для обращения к элементу массива указывается идентифи­катор массива и индекс элемента в круглых скобках, например w[2], a[0] [1].

Идентификаторы, определенные как зарезервированные слова, в другом качестве ис­пользоваться не могут (табл.4.1).

 

Таблица 4.1

Зарезервированные слова C++

 

asm delete if return try
auto do inline short typedef
break double int signed union
case else long sizeof unsigned
catch enum new static virtual
char extern operator struct void
class float private switch volatile
const for protected template while
continue friend public this  
default goto register throw  

 

Идентификаторы, содержащие двойное подчеркивание " ___", резервируются для реализаций C++ и стандартных библиотек и программистами не могут употребляться.

 







Дата добавления: 2014-11-12; просмотров: 603. Нарушение авторских прав; Мы поможем в написании вашей работы!



Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...

Плейотропное действие генов. Примеры. Плейотропное действие генов - это зависимость нескольких признаков от одного гена, то есть множественное действие одного гена...

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

ТРАНСПОРТНАЯ ИММОБИЛИЗАЦИЯ   Под транспортной иммобилизацией понимают мероприятия, направленные на обеспечение покоя в поврежденном участке тела и близлежащих к нему суставах на период перевозки пострадавшего в лечебное учреждение...

Кишечный шов (Ламбера, Альберта, Шмидена, Матешука) Кишечный шов– это способ соединения кишечной стенки. В основе кишечного шва лежит принцип футлярного строения кишечной стенки...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия