|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Переменные и выражения.. класс памяти] [const] тип имя [инициализатор];Переменные и выражения. В любой программе требуется производить вычисления. Для этого используются выражения, которые состоят из операндов, знаков операций и скобок. Каждый операнд, в свою очередь, является выражением или одним из его частных случаев, например, константой или переменной. Переменная – это именованная область памяти, в которой хранятся данные определенного типа. У переменной есть имя и значение. Имя служит для обращения к области памяти, в которой хранится значение. Перед использованием любая переменная должна быть описана конструкцией вида: [класс памяти] [const] тип имя [инициализатор]; Необязательный класс памяти может принимать одно из значений auto, extern, static и register. Модификатор const показывает, что значение переменной изменять нельзя. Такую переменную называют именованной константой, или просто константой. При описании можно присвоить переменной начальное значение, это называется инициализацией. Инициализатор можно записывать в двух формах – со знаком равенства: = значение или в круглых скобках: (значение). Константа должна быть инициализирована при объявлении. В одном операторе можно описать несколько переменных одного типа, разделяя их запятыми. Если тип инициализирующего значения не совпадает с типом переменной, то выполняются преобразования типа по определенным правилам. Описание переменной явно или по умолчанию задает ее область действия. Однако класс памяти и область действия зависят не только от описания, но и от места размещения его в программе. Область действия идентификатора – это часть программы, в которой его можно использовать для доступа к связанной с ним области памяти. в зависимости от области действия переменная может быть локальной или глобальной. Если переменная определена внутри блока, она называется локальной, область ее действия – от точки описания до конца блока, включая все вложенные блоки. Если переменная определена вне любого блока, она называется глобальной и областью ее действия считается файл, в котором она определена, от точки описания до его конца. Класс памяти определяет время жизни и область видимости программного объекта. Если класс памяти не указан явным образом, он определяется компилятором исходя из контекста объявления. Время жизни может быть постоянным (в течение выполнения программы) и временным (в течение выполнения блока). Областью видимости идентификатора называется часть текста программы, из которой допустим обычный доступ к связанной с идентификатором областью памяти. чаще всего область видимости совпадает с областью действия. Исключением является ситуация, когда во вложенном блоке описана переменная с таким же именем. В этом случае внешняя переменная во вложенном блоке невидима, хотя он и входит в ее область действия. Но к этой переменной, если она глобальная, можно обратиться, используя операцию доступа к области видимости ::. Для задания класса памяти используются следующие спецификаторы: - auto – автоматическая переменная. Память под нее выделяется в стеке и при необходимости инициализируется каждый раз при выполнении оператора, содержащего ее определение. Освобождение памяти происходит при выходе из блока, в котором описана переменная. Время ее жизни – с момента описания до конца блока. Для глобальных переменных этот спецификатор не используется, а для локальных он принимается по умолчанию; - extern – означает, что переменная определяется в другом месте программы (в другом файле или дальше по тексту). Используется для создания переменных, доступных во всех модулях программы, в которой они объявлены. Если переменная в том же операторе инициализируется, то данный спецификатор игнорируется; - static – статическая переменная. Время жизни – постоянное. Инициализируется один раз при первом выполнении оператора, содержащего определение переменной. В зависимости от расположения оператора описания статические переменные могут быть глобальными и локальными. Глобальные статические переменные видны только в том модуле, в котором они описаны; - register – аналогично auto, но память выделяется по возможности в регистрах процессора. Если такой возможности у компилятора нет, переменные обрабатываются как Если при определении начальное значение переменных явным образом не задается, компилятор присваивает глобальным и статическим переменным значение соответствующего типа. Автоматические переменные не инициализируются. Описание переменной может выполняться в форме объявления или определения. Объявление информирует компилятор о типе переменной и классе памяти, а определение содержит, кроме этого, указание компилятору выделить память в соответствии с типом переменной. В С++ большинство объявлений являются одновременно и определениями.
Знаки операций в Си++ Знаки операций обеспечивают формирование выражений. Выражения состоят из операндов, знаков операций и скобок. Каждый операнд является, в свою очередь, выражением или частным случаем выражения – константой или переменной. Унарные операции
Бинарные операции. Аддитивные:
Мультипликативные:
Операции сдвига (определены только для целочисленных операндов). Формат выражения с операцией сдвига: операнд_левый операция_сдвига операнд_правый
Поразрядные операции:
Операции сравнения: результатом являются true( не 0) или false(0)
Логические бинарные операции:
Операции присваивания =, +=, -=, += и т.д. Формат операции простого присваивания: операнд1=операнд2 Леводопустимое значение (L-значение) – выражение, которое адресует некоторый участок памяти, т. е. в него можно занести значение. Это название произошло от операции присваивания, т. к. именно левая часть операции присваивания определяет, в какую область памяти будет занесен результат операции. Переменная – это частный случай леводопустимого выражения. Условная операция. В отличие от унарных и бинарных операций в ней используется три операнда. Выражение1 ? Выражение2 : Выражение3; Первым вычисляется значение выражения1. Если оно истинно, то вычисляется значение выражения2, которое становится результатом. Если при вычислении выражения1 получится 0, то в качестве результата берется значение выражения3. Например: x<0 ? -x : x ; //вычисляется абсолютное значение x. Операция явного (преобразования) приведения типа. Существует две формы: каноническая и функциональная: 1) (имя_типа) операнд 2) имя_типа (операнд) (int)a //каноническая форма int(a) //функциональная форма
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|