Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
162.3 Кб
Скачать

2.4. Объявление констант

В С++ введена концепция определяемых пользователем констант для указания на то, что значение нельзя изменить непосредственно. Это может быть полезно в нескольких отношениях. Например, многие объекты не меняются после инициализации; использование символических констант приводит к более удобному в сопровождении коду, чем применение литералов непосредственно в тексте программы; указатели часто используются только для чтения, но не для записи и т.д.

Чтобы объявить объект константой, в объявление нужно добавить ключевое слово const. Так как константе нельзя присваивать значения, она должна быть инициализирована.

const <тип> <имя>=<значение>;

Пример:

const int A = 100;

const int B[] = {1, 2, 3, 4, 5};

Const модифицирует тип, т.е. ограничивает возможное использование объекта, но не указывает способ размещения константного объекта. Простым и типичным использованием константы является тот случай, когда значение константы известно во время компиляции и под неё не требуется выделение памяти. Для массива констант, как правило, требуется выделение памяти, так как, в общем случае, компилятор не в состоянии определить, к какому элементу массива происходит обращение в выражении.

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

Также можно использовать перечислимые константы, определяемые через ключевое слово enum. Такой способ позволяет именовать только целые константы.

2.5. Операции, выражения и операторы

Понятие выражения, как и понятие переменной, заимствовано из алгебры. Выражение - это группа символов, представляющее некоторое значение. Оно может содержать числа, символы для математических действий, такие как сложение или деление, и даже имена переменных. Например, выражение

(4 х 5) - 4 представляет значение 16.

Почленная интерпретация этого выражения - "взять число 4, умножить его на 5, из результата вычесть 4".

В языке С существует три типа выражений:

- математическое выражение, дающее численный результат;

- текстовое выражение, дающее строку символов;

- логическое выражение, дающее в результате 1 или 0 (интерпретируемые как "истина" или "ложь".

В зависимости от количества операндов различают унарные (один операнд), бинарные (два операнда) и тренарные (три операнда).

Унарные операции:

Операция

Описание

Пример

&

Получение адреса операнда

int MyVal = 1024;

int *pint;

pint = &MyVal;

*pint = *pint + 1;

cout << MyVal;

*

Обращение по адресу к значению (разыменование)

-

Унарный минус – изменение знака арифметического операнда

Изменение знака арифметического операнда

+

Унарный плюс

Введен для симметрии с унарным минусом

~

Поразрядное инвертирование внутреннего двоичного кода

unsigned short i; (0 ... 65 535);

i=10; i=~i;

cout << i;

!

Логическое отрицание значения операнда

++

Инкремент (префиксный или постфиксный)

--

Декремент (префиксный или постфиксный)

sizeof

Вычисление размера в байтах

::

Операция доступа

Бинарные операции:

Операция

Описание операции

Арифметические операции

+

Сложение

-

Вычитание

*

Умножение

/

Деление

%

Получение остатка от деления целочисленных операндов

Операции отношения (сравнения)

<

Меньше

>

Больше

<=

Меньше или равно

>=

Больше или равно

= =

Равно

!=

Не равно

Логические бинарные операции

&&

Конъюнкция (И)

| |

Дизъюнкция (ИЛИ)

Операции присваивания

=

Простое присваивание

*=

Присваивание произведения значений операндов

/=

Присваивание частного от деления значений операндов

%=

Присваивание остатка от деления значений операндов

+=

Присваивание суммы значений операндов

-=

Присваивание разности значений операндов

Операции сдвига

<<

Левый сдвиг

>>

Правый сдвиг

Поразрядные операции

&

Поразрядная конъюнкция битовых представлений значений целочисленных операндов

|

Поразрядная дизъюнкция -//-

^

Поразрядная исключающая дизъюнкция -//-

Деление целых чисел дает в результате целое число. Дробная часть результата, если она есть, отбрасывается:

int MyVal1 = 21 / 6;

int MyVal2 = 21 / 7;

И MyVal1, и MyVal2 в итоге получат значение 3.

Один нюанс, который вы должны запомнить.

float res;

res = 5/4;

Результат: res = 1.

Для того, чтобы посчитать "правильно", этот фрагмент программы должен быть

float res;

res = 5./4.;

Результат: res = 1.25.

Результат получения остатка от деления целочисленных операндов положителен, если оба операнда положительны. Если же один или оба операнда отрицательны, результат зависит от реализации, то есть машинно-зависим.

Значением операции сдвига является битовое представление левого операнда, сдвинутое влево (<<) или вправо (>>) на количество разрядов, равное значению правого операнда.

При левом сдвиге на i разрядов первые i разрядов левого операнда теряются, последние i разрядов левого операнда заполняются нулями.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]