Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 3.2 (ч.1). Команды и данные. Абстракция да...docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
624.15 Кб
Скачать

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

Зарезервированные слова – это лексемы, обозначающие элементы языка С++ (таблица 3.2.1).

Таблица 3.2.1

asm

do

if

return

typedef

and

auto

double

inline

short

typeid

and_eq

bool

dynamic_cast

int

signed

typename

bitand

break

else

long

sizeof

union

bitor

case

enum

mutable

static

unsigned

compl

catch

explicit

namespace

static_cast

using

not

char

export

new

struct

virtual

not_eq

class

extern

operator

switch

void

or

const

false

private

template

volatile

or_eq

const_cast

float

protected

this

wchar_t

xor

continue

for

public

throw

while

xor_eq

default

friend

register

true

delete

goto

reinterpret_cast

try

Порядок использования зарезервированных слов строго предопределён семантикой языка. Так, например, зарезервированное слово int может быть использовано для описания типа данного, но не его имени, а потому никак не может быть частью лексемы вроде int = 2;.

3.2.2 Данные

В качестве данных (см. раздел 1) могут выступать2:

  • скаляры: постоянные, переменные, перечисления, указатели и ссылки;

  • агрегаты: массивы, струк­туры, объединения и их комбинации, а также классы;

  • функции.

3.2.2.1 Идентификаторы данных

Идентификатор – это мнемоническое имя данного, совокупности данных или процедуры, формируемое согласно правилу:

идентификатор ::= буква {буква | десятичная цифра};

Данные хранятся в ячейках памяти компьютера, доступ к которым можно получить, обращаясь к ячейкам по их идентификаторам. Длина идентификатора не может превышать 250 значащих символов. В качестве иден­тифи­каторов нельзя использовать зарезервированные слова. Примеры прави­ль­ных идентификаторов: Dispers, X1, _Flag, _ _.

3.2.2.2 Типы данных

Типом данного называется его характеристика, определяющая:

      • способ хранения данного в памяти компьютера;

      • до­пу­стимый диапазон значений данного;

      • способ доступа к данному;

      • правила записи и использования дан­ного в программе.

Все данные в языке С++ строго типизирова­ны. Разновидности типов данных определяются правилами:

тип данного ::= базовый | модифицированный;

базовый тип ::= char(символьный) | int(целый) | float(действительный) | bool(логический) | void(пустой);

модифицированный символьный тип ::=

([signed(знаковый)] | unsigned(беззнаковый)), (char | wchar_t(широкий));

модифицированный целый тип ::=

([signed] | unsigned), [ ([short(короткий)] | long(длинный)) | long long(очень длинный)) ], [int];

модифицированный действительный тип ::=

(long float | double)(длинный) | long double(расширенный));

Беззнаковые данные могут быть только положительными (включая нулевое значение), а знаковые могут быть и отрицательными.

Данные типа char хранятся в памяти в виде кодов символов (целых чисел), в формате данных типа int, а потому могут иметь знак.

Двухбайтовые символы UNICODE в языке С++ представляются с помощью широких символов типа wchar_t. Детали реализации типа wchar_t зависят от компилятора; при этом может изменяться и количество байтов, которое отводится под код одного символа. Тем не менее, в большинстве случаев используется именно двухбайтовое представление символов.

Модификаторы signed и short типов данных определены по умолчанию и могут опускаться при объявлении данных. Если же в объявлении указан модификатор short или модификатор long, то описатель базового типа int можно опускать.

До­пу­стимый диапазон значений данных различных типов приведен в таблице 3.2.2.

Таблица 3.2.2

Тип данного

Размер (в байтах)

Диапазон значений (IA32)

[signed] char

1

-128 … 127

unsigned char

1

0 … 255

[signed] [short] int

2

-32 768 … 32 767

unsigned [short] int

2

0 … 65 535

[signed] wchar_t

2

-32 768 … 32 767

unsigned wchar_t

2

0 … 65 535

[signed] int

4

-2 147 483 648…21 47 483 647

unsigned int

4

0…4 294 967 295

[signed] long int

4

-2 147 483 648…21 47 483 647

unsigned long int

4

0…4 294 967 295

[signed] long long int

8

-(263-1) … (263-1)

unsigned long long int

8

0…264-1

float

4

-3.4·1038 ... +3.4·1038

long float или double

8

-1.7·10308 … +1.7·10308

long double

10

-3.4·104932... +1.1·104932

bool

1

true, false

На компьютерах с 32-разрядной архитектурой (IA32) типы данных int и long эквивалентны. На компьютерах с 64-разрядной архитектурой (IA64) данные типы long занимают уже 8 байтов памяти и имеют диапазон значений 0… 18 446 744 073 709 551 616 (для unsigned long) и -9 223 371 036 854 775 808 …+9 223 371 036 854 775 807 (для signed long).

Данные логического типа (bool) могут принимать лишь два значения: true (истина) и false (ложь). Однако, кроме этого, в качестве данных логического типа можно использовать и данные целого типа: значение 0 расценивается как false, а любое ненулевое значение - как true.

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

пользовательский тип данного ::= typedef, тип данного, новый тип

Примеры объявления пользовательских типов данных:

  1. typedef long double Large; // введено новое обозначение «Large» типа «long double»

  2. typedef char Symbol; // теперь при объявлении символьного данного вместо

// описателя «char» можно использовать описатель «Symbol»

В языке С++ имеются квалификаторы типа, определяющие доступность и модифицируемость данных: const, volatile и restrict. Квалификатор типа должен предшествовать наименованию типа данного, который он квалифицирует (уточняет).

Данное, в объявлении которого использован квалификатор const, является постоянной и не может изменять свое значение.

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

Квалификатор restrict применяется только к указателям на данные. Указатель, описанный с этим квалификатором, становится единственным средством доступа к данному.