Операция присваивания.
Язык C++ имеет несколько особенностей выполнения операции присваивания, задаваемого символом операции =. При выполнении операции значение операнда справа от знака равенства записывается в переменную, указанную слева от знака.
В отличие от других языков программирования в С++ допускается запись в одном предложении сразу нескольких операций присваивания. Например:
Int a,b,c,d;
a=b=c=d=145;
Другая особенность операции присваивания в языке С++ - наличие так называемой комбинированной операции присваивания:
переменная операция = выражение
Где переменная – это обычная как-то задаваемая переменная.
Операция – это одна из операция, задаваемых знаками: *, /, +, -, % , << , >> , &, ^ , |.
Выражение – любое выражение.
Например:
Int a,b;
a=b=10;
a+=12; // a теперь имеет значение 22
b-=(a+4); // b теперь имеет значение -16
Арифметические выражения.
Приоритет операций и ассоциативность
Можно ли в языке C++ выполнять сложные арифметические вычисления? Да, но нужно знать, какие правила языка C++ при этом используются. Например, многие выражения содержат более одной операции. Отсюда возникает вопрос, какая операция должна выполняться первой? Рассмотрим такой оператор:
int i = 3 + 4*5; //35 или 23?
Здесь число "4" является операндом как в операции сложения (+), так и в операции умножения (*). Когда один операнд может участвовать более чем в одной операции, чтобы решить, какая операция должна выполняться первой, в языке C++ применяются правила приоритета операций. Для арифметических операций используется обычная алгебраическая приоритетность, в соответствии с которой умножение, деление и деление по модулю выполняются перед сложением и вычитанием. Таким образом, 3+4*5 означает 3 + (4 * 5), а не (3 + 4) *. 5. Следовательно, ответ будет 23, а не 35.
Порядок выполнения операций можно, разумеется, изменить с помощью круглых скобок. Обратите внимание на то, что операции *, / и % имеют одинаковый приоритет. Аналогично сложение и вычитание обладают одинаковым, но более низким по сравнению с умножением приоритетом.
Однако в некоторых случаях правил приоритетности недостаточно. Рассмотрим следующий оператор:
float j = 120/4*5; // 150 или 6?
Число "4" снова является операндом двух операций. Однако операции /и * имеют одинаковый приоритет, поэтому одного приоритета здесь недостаточно, чтобы определить, что делать в первую очередь: делить 120 на 4 или умножать 4 на 5. А этот порядок имеет значение, так как в первом случае результат равен 150, а во втором — 6. Когда две операции имеют одинаковый приоритет, порядок выполнения операций определяется правилом «слева направо».
Поэтому j=150.0;
Дата добавления: 2016-04-22; просмотров: 685;