Комментарии в C++. Переменные и типы данных. Константы. Выражения и операторы. Арифметические операции. Оператор присваивания

Страницы работы

Фрагмент текста работы

Переносимость означает, что программы, написанные для работы на компьютерах одного типа, будут (хотя и не обязательно) работать и на компьютерах другого типа. Это свойство языка С++ сделало его с самого начала популярным, когда операционная система UNIX, реализованная на C++ для машин PDP, была перенесена с небольшими изменениями на Interdata'8/32. Но при переносе программного обеспечения с ЭВМ одного типа на другой разработчика подстерегают определенные неприятности.

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

Так, чистая целочисленная переменная (тип int без спецификаторов short или long) при работе в 16-разрядной операционной системе (DOS, Windows 3.1 и т.д.) занимает всего 2 байта. В то же время под эту же переменную в 32-разрядной операционной системе (Windows 95, Windows NT и т.д.) отводится уже 4 байта.

Определить размер переменной любого типа данных (как базового, так и производного) можно с помощью оператора размера sizeof. Данный оператор может быть применен к константе, типу и переменной.

Рассматриваемая ниже программа поможет вам определить размер базовых типов данных для конкретной платформы ПК.

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

Поразрядные логические операции

На практике довольно часто приходится отслеживать, состояния различных программных объектов с помощью флагов. Для этой цели можно использовать булевские переменные. Однако если у вас слишком много признаков, удобнее в качестве флагов использовать отдельные биты переменных. Для ПК на базе платформы Intel один байт представляет собой восемь бит информации, а каждый бит может принимать значение 0 или 1. Таким образом, в одном байте может быть закодировано любое целое число от 0 до 255 включительно (28 = 256). Биты в байте считаются справа налево.

Рассмотрим, например, панель из пяти выключателей SW1 ... SW5. Можно было бы объявить в качестве флагов 5 переменных типа bool (по 1 башу на каждый объект). Каждый выключатель может принимать состояние "включено" (1 - true) или "выключено" (0 - false).

bool  SW1,  SW2,  SW3,  SW4, SW5;

Тогда, проверяя значения указанных выше переменных, можно судить о состоянии того или иного выключателя.

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

Рисунок 1

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

Таблица 4-поразрядные логические операции

&

логическое И (умножение)

|

логическое ИЛИ (сложение)

^

исключающее ИЛИ

~

логическое НЕ (инверсия)

Результат применения оператора "логическое И" (умножение) к двум битам равен единице только тогда, когда оба операнда установлены

Похожие материалы

Информация о работе

Тип:
Конспекты лекций
Размер файла:
188 Kb
Скачали:
0