Читайте также: |
|
В языке C++ кроме обычного оператора присваивания =, существуют операторы присваивания, совмещенные с основными операциями. Они позволяют писать инструкции вида a=a+b; в более краткой форме a+= b;
Знак оператора | Выполняемое действие | Примеры выражений |
= += –= *= /= %= <<= >>= &= |= ^= | Простое присваивание Сложение и присваивание Вычитание и присваивание Умножение и присваивание Деление и присваивание Вычисление остатка и присваивание Сдвиг влево и присваивание Сдвиг вправо и присваивание Побитовое И и присваивание Побитовое ИЛИ и присваивание Побитовое исключающее ИЛИ и присваивание | k = 2 k+=2 k–=2 k*=2 k/=2 k%=2 k<<=2 k>>=2 k&=2 k|=2 k^=2 |
В языке C++ операторы выполняются в очередности, определяемой их приоритетом. Всего имеется 16 приоритетов операций.
Пр-т | Знаки операторов | Тип операторов | Порядок выполнения |
() []. -> | Вызов функции, выбор элемента массива, доступ к члену структуры | Слева направо | |
– ~! * ++ –– sizeof (тип) тип() | Одноместные (унарные) | Справа налево | |
.* ->* | Доступ к члену класса через указатель | Слева направо | |
* / % | Умножение, деление, остаток от деления | Слева направо | |
+ – | Сложение, вычитание | Слева направо | |
<< >> | Сдвиг влево и вправо | Слева направо | |
< > <= >= | Отношение (неравенство) | Слева направо | |
==!= | Отношение (равно, не равно) | Слева направо | |
& | Побитовое И | Слева направо | |
^ | Побитовое исключающее ИЛИ | Слева направо | |
| | Побитовое ИЛИ | Слева направо | |
&& | Логическое И | Слева направо | |
|| | Логическое ИЛИ | Слева направо | |
?: | Условная | Слева направо | |
= *= /= %= += -= <<= >>= | Простое и составное присваивание | Справа налево | |
, | Последовательное вычисление | Слева направо |
Сначала выполняются операторы с более высоким приоритетом. В случае одинакового приоритета операторы выполняются либо слева направо, либо справа налево. Напр, арифметические операторы выполняются слева направо. Инструкция a = b+ c + d + e; в которой сложения будут выполняться слева направо по умолчанию, эквивалентна инструкции a = ((b+ c) + d) + у; в которой порядок выполнения сложений указан скобками.
Операторы присваивания выполняются справа налево, поэтому инструкция x = y = z = 10; присвоит всем трем переменным одно значение 10.
№9. Структура программы на языке С++. Объявления переменных. Объявления и определения. Инструкции и блоки.
Структура программы: каждая программа должна иметь функцию main, которая может быть единственной функцией. Для размещения данных, которые нужно обработать в программе, используются переменные. Все переменные должны быть объявлены до их использования. Переменные можно объявлять внутри какой-либо функции или вне всех функций. Переменные, объявленные внутри функции являются локальными, они существуют и доступны только внутри этой функции. Переменные, объявленные вне функций называются глобальными, их можно использовать внутри любой функции.
Объявление задает тип и содержит список из одной или нескольких переменных. Например,
int lower, upper, step; //три переменных типа int
char c, line[1000]; // Здесь c простая переменная типа char, line – массив из 1000 элементов типа char.
При объявлении переменная может быть инициализирована, например,
char esc = ’\\’; //В апострофы заключается одиночный символ
int i = 0;
float eps = 1.0e-5;
К любой переменной в объявлении можно применить квалификатор const для указания того, что ее значение далее не будет изменяться: const double e = 2.71828182845905;
Объявление (declaration) сообщает компилятору о том, что в программе будет существовать какой-либо объект, например, переменная или функция. Инструкция extern int k; является объявлением. Теперь имя целой переменной k можно использовать в выражениях. Ключевое слово extern (внешний) указывает, что память под переменную k будет выделена в другом месте. Определение (definition) можно рассматривать как объявление, которое влечет за собой резервирование памяти для переменной или функции. Все объявления переменных из предыдущего пункта являются также и определениями, так как компилятор зарезервирует под них память.Когда не требуется конкретизация, вместо терминов определение и объявление можно использовать термин описание.
Программа разбита на множество функций, которые решают небольшую самостоятельную часть общей задачи. Каждая функция состоит из отдельных предложений или инструкций, которые завершаются;. Слово 'инструкция' заменяемо словом 'оператор'. Каждая инструкция задаёт какое-то действие в программе. Для объединения нескольких инструкций в одну составную (блок) используются фигурные скобки: { }. Блок с точки зрения синтаксиса воспринимается как одна инструкция. В C и C++ функции запрещено определять внутри других функций. Поэтому имя функции всегда глобально (т е доступно в любом месте программы). Переменные можно объявлять в любом месте программы. Если переменная объявлена в функции, то она существует до закрывающей скобки ближайшего открывающего блока {...}. Переменные, объявленные внутри блока, вытесняют переменные с такими же именами охватывающих блоков.
if (n>0){
int i;
for(i=1; i<n; i++)... }
В этом фрагменте областью действия переменной i является ветвь if, выполняемая для n>0 и переменная i не имеет никакого отношения к любым i, существующим вне этого блока. Переменные, необходимые в качестве параметров цикла можно определять непосредственно в заголовке цикла.
int s=0;
for (int i=1; i<=100; i++)
s+=i;
cout <<i; //ошибка, так как i не определена вне цикла. Но в ТС++ переменная, объявленная в заголовке цикла, существует не только в цикле, но до конца блока, поэтому этот фрагмент будет выполняться без ошибок.
Блочная структура влияет и на область действия внешних переменных. Если даны описания:
INT X;
F()
{ DOUBLE X;...}
То появление X внутри функции F относится к внутренней переменной типа DOUBLE, а вне F - к внешней целой переменной.
Дата добавления: 2015-07-08; просмотров: 560 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Целые типы в языке Си и операции над ними. Представление целых констант в различных системах счисления. | | | Цикл do…while. Программа вычисления квадратного корня. |