Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по Программированию.doc
Скачиваний:
37
Добавлен:
22.05.2015
Размер:
3.19 Mб
Скачать

5.3 Операции языка с

5.3.1 Арифметические операции

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

Язык С имеет еще две операции, которых нет в других языках. Это унар­ные операции ++ (инкремент) и — (декремент). Унарной называется операция,

которая имеет только один операнд. Операция ++ добавляет единицу к операн­ду, операция — вычитает единицу из операнда. Обе операции могут следовать перед операндом (префиксная форма записи) и после операнда (постфиксная форма записи). При префиксной форме переменная сначала увеличивается или уменьшается на единицу, а затем это ее новое значение используется в том вы­ражении, в котором она встретилась. При постфиксной форме в выражении ис­пользуется текущее значение переменной и лишь затем переменная увеличива­ется или уменьшается на единицу. Три написанные ниже оператора дают один и тот же результат, но имеют различие при использовании в выражениях: i = i+1; ++i; i++;

Например, в результате выполнения операторов int i = 1, j; j = i++ * i++;

значение переменной i будет равно 3, а значение переменной j равно 1.

Если изменить эти операторы следующим образом: int i = 1, j;

j =++ i * ++i;

то результат будет другим: значение i будет равно 3, а значение j равно 9.

5.3.2 Операции отношения и логические операции

Операции сравнения: == (равно), != (не равно), <, >, <=, >= используются при сравнении двух выражений. Результатом такого сравнения могут быть значения true (истина) или false (ложь). Однако результатом логического вы­ражения может являться и целочисленное арифметическое значение. При этом значение 0 расценивается как false, а любое ненулевое значение — как true. Рас­смотрим пример: int tr, fal; tr = (101<=105); fal= (101>105);

В результате выполнения этих операторов переменная tr получит значение 1, а переменная fal станет равной 0.

Не следует путать операторы типа if (A = =2)...;

и

if (A =2).;

Оба эти оператора верны, так как в C любое выражение, имеющее некоторое значение, может использоваться в условных операторах. Но если в первом слу­чае значение логического выражения может быть как истинным, так и ложным, в зависимости от значения переменной А, то во втором случае значение логиче­ского выражения всегда истинно, так как в результате присваивания значение А равно двум и не является нулевым.

В С имеется три логические операции:

&& — логическое И (AND)

|| — логическое ИЛИ (OR)

! — логическое НЕ (NOT)

Логические операции в языке С соответствуют классическим логическим операциям, а их результат — соответствующим таблицам истинности.

5.3.3 Операции присваивания

Особенностью обычного оператора присваивания является то, что он

и допускает многократное использование, например:

a=b=c=x*y;

Выполняются операции присваивания справа налево, т. е. сначала вычисляется значение выражения x*y, затем это значение присваивается c, потом b и лишь затем а.

Кроме обычного присваивания, все прочие являются составными опера­циями. Они присваивают переменной, стоящей слева, результат применения простой операции, указанной перед символом «=», к обоим операндам.

Например, выражение X+=Y эквивалентно выражению X=X+Y, но запи­сывается компактнее и выполняется быстрее.