-обычное присваивание (=);
-присваивание, соединенное с одной их бинарных операций (+=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^=);
-операции инкремента и декремента (увеличения и уменьшения на 1).
Операция присваивания "=" сохраняет значение выражения, стоящего в левой части, в переменной, а точнее, в адресном выражении, стоящем а правой части. При выполнении операции присваивания тип выражения в правой части преобразуется к типу адресного выражения в левой. Результатом операции является значение левой части после присваивания, соответственно, тип результата -это тип левой части.
Обычное присваивание: long a; char b; int c;
a = b = c; // эквивалентно b = c; a = b;
В данном случае при первом (правом) присваивании тип int преобразуется к char, а результатом операции является значение переменной b типа char после выполнения этого присваивания.
Операция присваивания, соединенная с одной из бинарных операций, -это частный случай, когда результат бинарной операции сохраняется (присваивается) в первом операнде:
a +=b; // эквивалентно a = a + b;
Приведенный выше эквивалент этой операции верен лишь в первом приближении, потому что в этих операциях левый операнд, если он является адресным выражением, вычисляется один, а не два раза. Следующий пример показывает это:
A[i++] +=b; // эквивалентно A[i] = A[i] + b; i++;
Операции инкремента и декремента увеличивают или уменьшают значение единственного операнда до или после использования его значения в выражении:
int a; // Эквивалент Интерпретация
a++; // Rez=a; a=a+1; Увеличить на 1 после использования
++a; // a=a+1; Rez=a; Увеличить на 1 до использования
a--; // Rez=a; a=a-1; Уменьшить на 1 после использования
--a; // a=a-1; Rez=a; Уменьшить на 1 до использования
9. Условные операторы языка С++. Примеры.
Условный оператор позволяет выполнить один из входящих в его состав операторов в зависимости от выполнения какого-либо условия. Оператор IF определяет, что тот или иной оператор должен выполняться в том случае, если справедливо заданное условие, т.е. выражение принимает значение true (истина). Если условие не выполняется, то выполняется оператор, следующий за служебным словом else (иначе).
Существует полная и краткая форма оператора. Полная форма условного оператора IF имеет следующий вид:
if ( условие ) {
Оператор1;
...
ОператорN;
}
еlse {
ОператорN+1;
...
ОператорN+M;
} ;
где IF – в переводе с англ. «если», <условие> - некоторое логическое выражение, ELSE – «иначе».
Если условие истинно, то выполняются операторы с 1 по N. Если условие ложно, то выполняются операторы с N+1 до N+M.
10. Операторы цикла языка С++. Примеры.
Оператор цикла while называется циклом с предусловием и имеет следующий формат: while ( выражение )
оператор;
Схема выполнения оператора while следующая:
1. Вычисляется выражение.
2. Если выражение равно нулю, то выполнение оператора while заканчивается и выполняется следующий по порядку оператор. Если выражение не равно нулю, то выполняется оператор в цикле while.
3. Процесс повторяется с пункта 1.
В операторе while проверка условия происходит вначале, перед выполнением операторов, образующих тело цикла. Оператор while удобно использовать в ситуациях, когда цикл не всегда должен выполняться. При построении цикла while необходимо включить в тело цикла какие-либо конструкции, изменяющие величину проверяемого выражения так, чтобы в конце концов оно стало равным нулю. В противном случае цикл будет бесконечным.
Пример
int i, s;
i=2;
while(i < 5) {
printf("Добрый день!");} /* цикл будет выполняться бесконечно*/
int i, s;
i=2;
while(i < 5) {
printf("Добрый день!");
i=i+1; } /* цикл будет выполнен 3 раза*/
Оператор с постусловием do…while
Оператор цикла do while называется оператором цикла с постусловием и используется в тех случаях, когда необходимо выполнить операторы, образующие тело цикла, хотя бы один раз. Формат оператора имеет следующий вид:
do оператор
while ( выражение );
Схема выполнения оператора do while:
1. Выполняется тело цикла (которое может быть составным оператором).
2. Вычисляется выражение.
3. Если выражение равно нулю, то выполнение оператора do while заканчивается и выполняется следующий оператор по порядку за оператором цикла. Если выражение не равно нулю, то выполнение оператора цикла do while продолжается с пункта 1.
Чтобы прервать выполнение цикла до того, как условие станет ложным, можно использовать оператор break. Операторы while и do while могут быть вложенными.
Пример
int i, j, k, s ;
j=0;
k=0;
s=0;
do { i=0;
while ( i < 5) { k++; i++; }
s=s+k+i-j;
j--; }
while ( j < -10);
Цикл for
Оператор цикла for - это наиболее общий способ организации цикла. Он имеет следующий формат:
for ( выражение_1 ; выражение_2 ; выражение_3 ) оператор;
Выражение 1 - выражение инициализации. Выражение 2 - это выражение, определяющее условие, при котором тело цикла будет выполняться. Выражение 3 - выражение итерации, определяет изменение переменных, управляющих циклом после каждого выполнения тела цикла.
Схема выполнения оператора for:
1. Вычисляется выражение 1.
2. Вычисляется выражение 2.
3. Если значение выражения 2 отлично от нуля, выполняется тело цикла, вычисляется выражение 3 и осуществляется переход к пункту 2. Если значение выражения 2 равно нулю, то управление передается на оператор, следующий за оператором for.
Важно отметить, что проверка условия выполняется в начале цикла. Это значит, что тело цикла может ни разу не выполниться, если выражение 2 при входе в цикл будет равно нулю.
Пример
void main() {
int i, b;
for ( i=1; i<10; i++ )
{ b=i*i;
printf("\n %2d в квадрате = %3d", i b); }}
Оператор continue
Оператор continue используется только внутри операторов цикла. Данный оператор передает управление на оператор продолжения цикла, при этом все операторы, следующие за continue, пропускаются. Формат оператора следующий:
continue ;
Пример
void main() {
int a, s;
for ( a=1;a <100; a++)
{ if ( a%2 ) continue; /* если остаток от деления не равен 0 */
/* то оператор s=s+a пропускается */
s=s+a; }}
В примере суммируются только четные числа в интервале от 1 до 100 .
11. Операторы перехода языка С++. Примеры.
12.Операторы языка С++: оператор выражения, пустой оператор, составной оператор, операторы потокового ввода-вывода. Дополнительные возможности потокового ввода-вывода. Управление точностью значений с плавающей точкой. Примеры.
При выполнении условной обработки в некоторых случаях программе необходимо выполнить только один оператор (простой оператор), если условие истинно. Однако в других случаях программа должна будет выполнить несколько операторов (составной оператор). Если в зависимости от результата определенного условия вашей программе нужно выполнить два или несколько связанных операторов, вы должны сгруппировать операторы внутри левой и правой фигурных скобок, как показано ниже:
if (age >= 21)
{
cout << "Все на выборы!" << endl;
cout << "Это то, что вам надо!" << endl;
}
Если вы используете cout для вывода значения с плавающей точкой, то обычно не можете сделать каких-либо предположений о том, сколько цифр будет выводить cout no умолчанию. Однако, используя манипулятор setprecision, вы можете указать количество требуемых цифр- Следующая программа использует манипулятор setprecision для управления количеством цифр, которые появятся справа от десятичной точки:
#include <iostream.h>
#include <iomanip.h>
void main(void)
{
float value = 1.23456;
int i;
for (i = 1; i < 6; i++) cout << setprecision(i) << value << endl;
}
1.2
1.23
1.235
1.2346
1.23456
Если вы используете манипулятор setprecision для изменения точности, ваша установка действует до тех пор, пока программа повторно не использует setprecision.
Точно так же, как cout предоставляет функцию cout.put для вывода символа, cin предоставляет функцию cin.get, которая позволяет вам читать один символ данных. Чтобы воспользоваться функцией cin.get, вы просто присваиваете переменной возвращаемый этой функцией символ, как показано ниже:
letter = cin.get();
Как вы уже знаете, при использовании cin для выполнения ввода с клавиатуры, cin использует пустые символы, такие как пробел, табуляция или возврат каретки, для определения, где заканчивается одно значение и начинается другое. Во многих случаях вы захотите, чтобы ваши программы считывали целую строку данных в символьную строку. Для этого программы могут использовать функцию cin.getline. Для использования cin.getline вам необходимо указать символьную строку, в которую будут помещаться символы, а также размер строки, как показано ниже:
cin.getline(string, 64);
Когда cin.get читает символы с клавиатуры, она не будет читать символов больше, чем может вместить строка. Удобным способом определить размер массива является использование оператора C++ sizeof, как показано ниже:
сin.getline(string, sizeof(string));
Если позже вы измените размер массива, то вам не нужно будет искать и изменять каждый оператор с cin.get, встречающийся в вашей программе. Вместо этого оператор sizeof' будет использовать корректный размер массива.
Чтение ввода с клавиатуры с помощью cin
Для чтения ввода с клавиатуры программы могут использовать входной поток cin. При использовании cin вы должны указать переменную, в которую cin помещает данные. Затем используйте оператор извлечения (>>) для направления данных, как показано ниже: