Главная Случайная страница


Полезное:

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


Категории:

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






Типы с плавающей точкой





Внутреннее представление вещественного числа состоит из 3 частей: знака, мантиссы и порядка. В IBM-совместимых ПК величины типа float занимают 4 байта, из которых один разряд отводится под знак мантиссы, 8 разрядов под порядок и 23 – под мантиссу.

Величины типы double занимают 8 байтов, под порядок и мантиссу отводятся 11 и 52 разряда соответственно. Длина мантиссы определяет точность числа, а длина порядка его диапазон.

Если перед именем типа double стоит спецификатор long, то под величину отводится 10 или более байтов. Внутреннее представление чисел типа long double сильно зависит от реализации.

 

Тип void

К основным типам также относится тип void. Множество значений этого типа пусто.

 

Переменные

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

int a; float x;

Общий вид оператора описания:

[класс памяти][const]тип имя [инициализатор];

Класс памяти может принимать значения: auto, extern, static, register. Класс памяти определяет время жизни и область видимости переменной. Если класс памяти не указан явно, то компилятор определяет его исходя из контекста объявления.

Время жизни может быть «программа» – все время выполнения программы или «блок» – в течение выполнения блока.

Область видимости – часть текста программы, из которой допустим обычный доступ к переменной. Обычно область видимости совпадает с областью действия. Исключение представляет случай, когда во внутреннем блоке существует переменная с таким же именем.

Const – показывает, что эту переменную нельзя изменять (именованная константа).

При описании можно присвоить переменной начальное значение (инициализация).

Классы памяти:

auto –автоматическая локальная переменная. Спецификатор auto может быть задан только при определении объектов блока, например, в теле функции. Этим переменным память выделяется при входе в блок и освобождается при выходе из него. Вне блока такие переменные не существуют. Т. о., время жизни автоматических (локальных) переменных – блок, область видимости – блок.

extern – глобальная переменная, она определена в другом месте программы (в другом файле или вне всех функций данного файла). Используется для создания переменных, которые доступны во всех файлах программы или всем функциям данного файла.

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

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

 

Пример.

Программа состоит из двух файлов.

Файл 1:

int a; // глобальная переменная

void main(){

int b; // локальная переменная

extern int x; // глобальная переменная х, определенная в другом месте

static int c; // локальная статическая переменная

a=1; // присваивание глобальной переменной

int a; // локальная переменная а

a=2; // присваивание локальной переменной

::a=3; // присваивание глобальной переменной

…// другой текст

}

Файл 2:

int x=4;// определение и инициализация х

…// другой текст

В примере переменная а определена вне всех блоков. Областью действия переменной а является вся программа, кроме тех строк, где используется локальная переменная а. Переменные b и с – локальные, область их видимости – блок. Время жизни различно: память под b выделяется при входе в блок (т. к. по умолчанию класс памяти auto), освобождается при выходе из него. Переменная с (static) существует, пока работает программа.

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

Имя переменной должно быть уникальным в своей области действия.

Рекомендации по составлению имен:

- используйте понятные имена;

- для локальных переменных используйте короткие и привычные имена, для глобальных – осмысленные и, возможно, длинные;


- не используйте в одной области видимости имена, отличающиеся лишь регистром;

- учтите, что символы о и 0, l и 1 похожи, не используйте в одной области видимости имена, отличающиеся лишь этими символами

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

В примере extern int x; – объявление, а остальные – определения.

 

2.5.Знаки операций в Си++

С++ содержит богатый набор операций. Операции сгруппированы по приоритетам, всего 15 групп приоритетов. Смысл операции зависит от количества операндов, к которым она применяется, а также от типов операндов.

 

Таблица 2.1 Унарные операции

& получение адреса операнда
* значение по адресу (разыменование)
- унарный минус, меняет знак арифметического операнда
~ поразрядное инвертирование внутреннего двоичного кода целочисленного операнда (побитовое отрицание)
! логическое отрицание (НЕ). В качестве логических значений используется 0 – ложь и не 0 – истина, отрицанием 0 будет 1, отрицанием любого ненулевого числа будет 0.
++ Увеличение на единицу: префиксная операция – увеличивает операнд до его использования, постфиксная операция увеличивает операнд после его использования. int m=1,n=2; int a=(m++)+n; // a=4,m=2,n=2 int b=m+(++n); //a=3,m=1,n=3
- - уменьшение на единицу: префиксная операция – уменьшает операнд до его использования, постфиксная операция уменьшает операнд после его использования.
sizeof вычисление размера (в байтах) для объекта того типа, который имеет операнд имеет две формы sizeof выражение sizeof (тип) Примеры: sizeof(float) //значением будет 4 sizeof(1.0) //значением будет 8, т. к. вещественные константы по умолчанию имеют тип double

 

В таблицах 2.2 и 2.3 приведены бинарные операции.

 

Таблица 2.2 – Бинарные операции: аддитивные

+ бинарный плюс (сложение арифметических операндов)
- бинарный минус (вычитание арифметических операндов)

 

Таблица 2.3 – Бинарные операции: мультипликативные

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

 

Операции сдвига (определены только для целочисленных операндов) и приведены в таблице 2.4.

Формат выражения с операцией сдвига:

операнд_левый операция_сдвига операнд_правый

 


Таблица 2.4 – Операции сдвига

<<< сдвиг влево битового представления значения левого целочисленного операнда на количество разрядов, равное значению правого операнда, освободившиеся справа разряды обнуляются
>>> сдвиг вправо битового представления значения правого целочисленного операнда на количество разрядов, равное значению правого операнда, освободившиеся слева разряды обнуляются или заполняются знаковым разрядом, это зависит от реализации. При сдвиге беззнаковых – всегда обнуляются.

 

Поразрядные операции приведены в таблице 2.5.

 

Таблица 2.5 – Поразрядные операции


& поразрядная конъюнкция (И) битовых представлений значений целочисленных операндов (бит = 1, если соответствующие биты обоих операндов равны 1)
| поразрядная дизъюнкция (ИЛИ) битовых представлений значений целочисленных операндов (бит = 1, если соответствующий бит одного из операндов равен 1)
^ поразрядное исключающее ИЛИ битовых представлений значений целочисленных операндов (бит = 1, если соответствующий бит только одного из операндов равен 1)

 

Операции сравнения: результатом являются true (не 0) или false (0) и приведены в таблице 2.6.

 

Таблица 2.6 – Операции сравнения

< меньше, чем
> больше, чем
<= меньше или равно
>= больше или равно
== равно
!= не равно

 

Логические бинарные операции приведены в таблице 2.7.

 

Таблица 2.7 – Логические операции

&& конъюнкция (И) целочисленных операндов или отношений, целочисленный результат ложь (0) или истина (не 0)
|| дизъюнкция (ИЛИ) целочисленных операндов или отношений, целочисленный результат ложь (0) или истина (не 0)






Date: 2016-11-17; view: 281; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.01 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию