Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен по информатике.docx
Скачиваний:
25
Добавлен:
22.09.2019
Размер:
1.18 Mб
Скачать
  1. Операторы управления областью видимости.

По мере возможности следует избегать использования в программах глобальных переменных. Однако если ваша программа должна использовать глобальную переменную, то может случиться, что имя глобальной переменной конфликтует с именем локальной переменной. При возникновении такого конфликта C++ предоставляет приоритет локальной переменной. Другими словами, программа предполагает, что в случае конфликта каждая ссылка на имя соответствует локальной переменной.

Однако могут быть ситуации, когда вам необходимо обратиться к глобальной переменной, чье имя конфликтует с именем локальной переменной. В таких случаях ваши программы могут использовать глобальный оператор разрешения С++ (::), если вы хотите использовать глобальную переменную. Например, предположим, что у вас есть глобальная и локальная переменные с именем number. Если ваша функция хочет использовать локальную переменную number, она просто обращается к этой переменной, как показано ниже:

number = 1001; // обращение к локальной переменной

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

::number = 2002; // Обращение к глобальной переменной

Следующая программа GLOBLOCA.CPP использует глобальную переменную number. В дополнение к этому функция show_numbers использует локальную переменную с именем number. Эта функция использует оператор глобального разрешения для обращения к глобальной переменной:

#include <iostream.h> int number = 1001; // Глобальная переменная

void show_numbers(int number)

{    cout << "Локальная переменная number" << " содержит " << number << endl;    cout << "Глобальная переменная number" << " содержит " << ::number << endl; }

void main(void) {    int some_value = 2002;    show_numbers(some_value) ; }

Когда вы откомпилируете и запустите эту программу, на вашем экране появится следующий вывод:

С:\> GLOBLOCA <ENTER>

Локальная переменная number содержит 2002

Глобальная переменная number содержит 1001

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

О глобальных переменных

Глобальная переменная представляет собой переменную, чье имя и значение известны на протяжении всей программы. Для создания глобальной переменной вы объявляете переменную в начале вашего исходного файла вне какой-либо функции. Все функции, которые следуют за таким объявлением, могут использовать эту глобальную переменную. Однако, поскольку злоупотребление глобальными переменными может привести к ошибкам, следует избегать их использования в ваших программах везде, где это возможно.

  1. Группы операций (особенности записи, таблица приоритетов)

  1. Понятие ассоциативности, приоритета, размерности. Таблица приоритета операций.

Приоритет операций - очерёдность выполнения операций в выражении, при условии, что в выражении нет явного указания порядка следования выполнения операций (с помощью круглых скобок). Если операции имеют одинаковый приоритет, то очерёдность выполнения таких операций определяется согласно свойству ассоциативности. Ассоциативность - направление выполнения операций в случае, если операции имеют одинаковый приоритет. В таблице 1 показаны основные операции в С++, их приоритет выполнения и ассоциативность.

Таблица 1 - Приоритет операций в С++

Приоритет

Операция

Ассоциативность

Описание

1

::

слева направо

унарная операция разрешения области действия

[ ]

операция индексирования 

()

круглые скобки

.

обращение к члену cтруктуры или класса

->

обращение к члену cтруктуры или класса через указатель

2

++

слева направо

постфиксный инкремент

--

постфиксный декремент

3

++

справа налево

префиксный инкремент

--

префиксный декремент

4

*

слева направо

умножение

/

деление 

%

остаток от деления

5

+

слева направо

сложение

-

вычитание

6

>>

слева направо

сдвиг вправо

<<

сдвиг влево

7

<

слева направо

меньше

<=

меньше либо равно

>

больше

>=

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

8

==

слева направо

равно

!=

не равно

9

&&

слева направо

логическое "И"

10

||

слева направо

логическое "ИЛИ"

11

?:

справа налево

условная операция (тернарная операция)

12

=

справа налево

присваивание

*=

умножение с присваиванием

/=

деление с присваиванием

%=

остаток от деления с присваиванием

+=

сложение с присваиванием

-=

вычитание с присваиванием

13

,

слева направо

запятая