Операции отношения

A - (--b)

A---b

J --;

cout << i << "\t" << j << endl; // На экран выведено 7 10

system("Pause");

return 0;

}

Из примера видно, что разница между префиксной и постфиксной формами этих операций не чувствуется. Действительно в этом примере эти две формы работают одинаково.

Немного изменим текст программы:

#include <iostream>

using namespace std;

int main()

{

int i = 7, j = 10;

cout << ++ i << "\t " << j ++ << endl; // На экран выведено 8 10

cout << i << "\t " << j << endl; // На экран выведено 8 11

cout << -- i << "\t " << j -- << endl; // На экран выведено 7 11

cout << i << "\t " << j << endl; // На экран выведено 7 10

system("Pause");

return 0;

}

Разница между префиксной и постфиксной формами этих операций заключается в том, что при префиксной форме, переменная сначала меняет свое значение, а потом это измененное значение обрабатывается. В постфиксной форме значение переменной сначала обрабатывается и только потом ее значение изменяется на 1.

В первом примере операторы ++ i; j ++; просто изменяют значения переменных i и j без какой-либо другой обработки и только после окончания работы этих операторов на экран выводятся эти измененные значения. Поэтому различие между префиксной и постфиксной формами не чувствуется. То же самое происходит и при выполнении операторов -- i; j--;.

Во втором примере префиксные и постфиксные формы операций инкремента и декремента участвуют в выполнении оператора вывода данных на экран. Поэтому при выполнении префиксных операций сначала происходит изменение значений переменной i, потом эти измененные значения выводятся на экран, а при выполнении постфиксных операций сначала выводятся неизмененные значения переменной j, а уже после этого производятся изменения значения этой переменной.

Еще пример:

#include <iostream>

using namespace std;

int main()

{

int i = 7, j = 10, k;

k = (++ i) + (j --); // Или k = ++ i + j --;

cout << "k = " << k << endl; // k = 18

cout << "i = " << i << endl; // i = 8

cout << "j = " << j << endl; // j = 9

system("Pause");

return 0;

}

А чему будет равно значение переменной k в этих случаях:

int i = 7, k;

k = (i ++) + i;

Здесь k = 14.

int i = 7, k;

k = (++ i) + i;

Здесь k = 16.

int i = 7, k;

k = i + (++ i);

Здесь k = 16.

int i = 7, k;

k = (++ i) + (++ i);

Здесь k = 18.

То есть сначала просматривается все выражение, при каждой встрече операции инкремента (декремента) в префиксной форме выполняется изменение на единицу переменной, а затем вычисляется выражение.

А как интерпретировать такие выражения:

a+++b

Эти выражения следует интерпретировать так:

(a++) + b

(a--) - b

Но не так:

a + (++b)

Для более понятной записи текста программы в подобных случаях лучше использовать скобки.

Операции этой группы служат для сравнения значений. Сюда входят следующие операции:

· == - равно;

· != - не равно;

· > - больше;

· >= - больше или равно;

· < - меньше;

· <= - меньше или равно.

Все эти операции бинарные. В качестве операндов могут быть использованы выражения любых арифметических типов данных. Результат этих операций всегда логического типа (bool).

Примеры:

a == b, a!= b, a > 10, (a - 3) >= (b + 10).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: