Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л_4_Операции_и_выражения.doc
Скачиваний:
11
Добавлен:
05.11.2018
Размер:
660.99 Кб
Скачать

Примеры использования

Что напечатает программа:

#define PRINT(x) printf (“%d\n”, x)

int x=2, y, z;

x *=3+2; PRINT(x);

x= x*5=10

x *=y=z=4; PRINT(x);

z=4  y=4  x=x*y=10*4=40

x =y==z; PRINT(x);

4==4  x=true, напечатает 1

x ==(y=z); PRINT(x);

значение выражения = 0, но x=1

#define PRINT printf (“%d\t %d\n”, x, y)

double d=3.2, x;

int i=2, y;

x = (y = d/i)* 2; PRINT(x, y);

y=1 x= 2

y = (x = d/i)* 2; PRINT(x, y);

x=1.6 y=3

y = d * (x = 2.5/d); PRINT(y);

y=2

x =d*(y=((int)2.9+1.1)/d); PRINT(x, y);

y=0  x=0

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

Операции используются при формировании условных выражений, используемых в условных операторах и циклах. Результатом операций является логическое значение true (ненулевое значение) или false (нуль). Действие операций соответствует их математическому пониманию. Операции имеют одинаковый приоритет, более низкий, чем арифметические операции, и выполняются в порядке «слева направо». Для изменения порядка выполнения операций применяются ( ).

bool b = 3>=3 == 2; //0 !!!

.

тип

операция

примеры

бинарные

< <= > >= (приоритет выше) == != (приоритет ниже)

a != b == c  (a != b) == c

1 2

x > y + 2  x > (y+2)

Пример:

#include <iostream>

#include <conio.h>

using namespace std;

int main()

{int numb;

cout << "Enter a number: "; cin >> numb;

cout << "numb<10 = " << (numb < 10) << endl;

cout << "numb>10 = " << (numb > 10) << endl;

cout << "numb==10 = " << (numb == 10) << endl;

_getch();

return 0;

}

Результат вывода:

Enter a number: 1

numb<10 is 1

numb>10 is 0

numb==10 is 0

Enter a number: 10

numb<10 is 0

numb>10 is 0

numb==10 is 1

!!! Обратите внимание, что запись a < b < c не дает синтаксической ошибки, но работает не так, как ожидалось (выполнение слева направо):

(a<b) true или false;

затем результат этого сравнения (1 (true) или 0 (false)) сравнивается с с.

Сравнение трех чисел: z >= y && y >= x

Факт, что x есть большее из чисел x, y, z, запишется так: x >= y && х >= z .

Операции отношения применимы и к переменным типа char. Сравнение ‘a’ < ‘b’ правильное, но сравнение ‘a’ < 5 – ошибочно (разные типы).

Проверить, что символ S является цифрой, позволяет выражение:

(S >= ’0’) && (S <= ’9’).

Проверить, что символ S является латинской буквой, позволяет выражение:

((S >= ’a’) && (S <= ’z’)) || ((S >= ’A’) && (S <= ’Z’))

Чтобы получить значение цифры N через ее символьное представление, необходимо вычислить выражение unsigned(’N’) - unsigned(’0’). Например, unsigned(’9’) - unsigned(’0’) даст в качестве значения 9.

Сравнение строк выполняется посимвольно слева направо, согласно значениям кодов символов.

!!! Обратите внимание, что если int i=44, а int j=24, то запись (i==j) дает значение ложь, а (i=j) дает значение истина. Объясните, почему.