Читайте также:
|
|
Что напечатает программа:
#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) дает значение истина. Объясните, почему.
Дата добавления: 2015-07-08; просмотров: 158 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Операции присваивания | | | Логические выражения и примеры их записи |