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

11) Переменные и выражения

Выражение это = операнд операция операнд

операнд = константа, перемененная, выражение

операции = + - …

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

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

Значение переменной — содержание области.

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

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

Если в описании переменной используется слово const, то переменную называют именованной константой. Инициализатор это конструкция, служащая для присвоения переменной начального значения. Int I = 5; int i(5);

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

Если переменная описана внутри блока { }, то область ее действия от точки описания до конца блока. В этом случае переменная называется локальной.

Если переменная описана вне любого блока. Она называется глобальной. И область ее действия — от точки описания до конца программы.

Класс памяти определяет время жизни и область видимости переменой.

Время жизни может быть постоянным (в течение всего времени выполнения программы)

и временный (в течение выполнения какого- либо блока)

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

Для задания класса памяти используются следующие слова:

auto (автоматическая переменная) память под нее выделяется в стеке. И освобождается при выходе из блока в котором написана переменная.

Время жизни такой переменной с момента описания до конца блока.

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

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

Extern (external) означает что переменная является внешней. ТО есть объявлена в другом месте программы в другой функции или в другом файле. Что бы переменная была доступна для нескольких блоков.

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

Static статическая переменная. Время жизни постоянное

Такая переменная специализируется один раз, при первом выполнении оператора, содержащего описание переменной.

Register это означает запрос на выделение памяти в регистре процессора. Если такой возможности у компилятора нет переменные будут отнесены к классу auto.

Int a;

int main()

{ int b;

extern int x;

static int c;

a = 1;

int a;

::a= 3;

return o;

}

:: - доступ к глобальной переменной

12) Операции

Операции могут быть унарными - с одним операндом.

Бинарными — с двумя операндами.

Одна операция с тремя операндами — тернанрная.

Язык C++ - типизированный язык. Все операнды входящие в выражение имеют типы, по которым определяется тип результата вычисления выражения.

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

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

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

cont = x<2;

= операция присваивания.

Операция присваивания является частью выражения. Его значение совпадает со значением присваиваемой переменной.

При вычислении выражений часто используется две операции ++ –

++ - инкремент increase

– - декремент decrease

Они унарные.

Если перед операндом ++х префиксная запись

в префиксной записи выражения сначала изменяется значение операнда и это значение является значением выражения. Увеличение на 1

Если после х++ - постфиксная запись

в постфиксной записи выражение приобретает значение операнда, и после этого значение операнда увеличивается на 1

int main()

{ int x = 3, y = 3;

cout<<”Префикс:''<<++x<<endl;

cout<<”Постфикс:''<<y++<<endl;

cout<<”x=''<<x<<endl;

cout<<”y=''<<y<<endl;

return 0;

}

На экране

Префикс 4

Постфикс 3

х=4

у=4

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

++ - инкремент

-- - декремент

Sizeof – размер

~ - Поразрядное отрицание

! - логическое отрицание

- - унарный минус

+ - унарный плюс

& - взятие адреса

* - разадресация

new - выделение памяти

delete - освобождение памяти

(type) - преобразование типа

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

Int main()

{ float x = 1.0;

cout<<”size of float”<<sizeof(float);

cout<<”size of x=”<<sizeof x;

return 0;

}

! и разрядное отрицание ~

!(отрицание) — дает в результате значение 0, если операнд принимает значение истина (не ноль) и значение 1 в противном случае.

Операнд может быть как целого так и вещественного типа, а также тип указатель.

~ выполняет инверсию в двоичном представлении целочисленного операнда.

В тех случаях, когда принудительно нужно изменить тип некоторого значения, перед ним указывает наименование типа (int)x+y.

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

* - умножение

/ - деление

% - остаток от целочисленного

+ - сложение

- - вычитание

<< - сдвиг влево

>> - сдвиг вправо

< - меньше

<= - меньше или равно

> - больше

>= -больше или равно

== - равно

!= - не равно

& - поразрядная коньюкция

^ - поразрядное включение

| - поразрядное или

&& - логическое и

|| - логическое или

Операции сдвига применяются только к целочисленным операндам. Количество двоичных разрядов на которое сдвигается первый операнд задается вторым операндом.

Операция амперсент & Поразрядная конъюнкция

a & b

| Поразрядное или

&&- и

|| - или

Операндами могут быть арифметические значения или указатели, при чем они могут иметь разные типы, при этом преобразование типов не происходит. Каждый операнд проверияется на эквивалентность 0. 0 — false не 0 – true

+=

-=

*=

/=

первый операнд должен быть переменной, а второй выражением

перем *= выражение перемен = переме * выраж

тернарная операция

операнд1 ? Операнд 2 : операнд3

арифм

указат

Если операнд 1 == true, то значение операнд 2

false операнд 3

значение выражения зависит от первого опернада.

#include <iostream>

int main()

{ int a = 11, b =4, max;

max= (b> a) ? b:a;

cout<<max;

return o;

}

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

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

Если операнды разных типов, то перед вычислением выполняется преобразование типов в сторону более длинных по размеру памяти. Для обеспечивания сохранности информации.

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