int x = 5, y = 2;
if (x == y) {
cout << "yes\n"; //сравнение
}
else {
cout << "no\n"; //выведет "no"
}
if (x = y) {
cout << "yes \n "; //присваивание
}
else {
cout << "no \n "; //выведет "yes"
}
Последнее выражение равносильно следующей последовательности операторов:
x = y;
if (x) {
cout << "yes \n ";
}
else {
cout << "no \n ";
}
-----------------------------------------------------------------------------------------
//пример 48.
Оптимизация записи условий
Запись
bool r = false;
if (a < b) {
r = true;
}
равносильна записи bool r = a < b;
-----------------------------------------------------------------------------------------
//пример 49.
int main() // «прокрутить» операторы вручную и проверить результаты
{
int x, y = 1, z;
if (y!= 0) {
x = 5;
}
printf(" %d\n", x); // 5
if (y == 0) {
x = 3;
}
else {
x = 5;
}
printf(" %d\n", x); // 5
x = 1;
if (y < 0) {
if (y > 0) {
x = 3;
}
else {
x = 5;
}
}
printf(" %d\n", x); // x=1
if (z = y < 0) {
x = 3;
}
else {
if (y == 0) {
x = 5;
}
else {
x = 7;
}
}
printf(" %d %d\n", x, z); // x=7 z=0
if (z = (y == 0)) {
x = 5;
}
x = 3;
printf(" %d %d\n", x, z); // x=3 z=0
if (x = z = y);
x = 3;
printf(" %d %d\n", x, z); // x=3 z=1
_getch();
return 0;
}
-----------------------------------------------------------------------------------------
Примеры использования оператора switch
//пример 50.
Печать событий в зависимости от года
#include <locale.h>
int main()
{
setlocale (LC_ALL, ".1251");
int year;
cin >> year;
switch (year)
{ case -500:
case -400: cout << "древнегреческий абак";break;
case 480:
case 490:
case 500: cout << "первые записи в 10c/c"; break;
case 1642: cout << "машина Б.Паскаля"; break;
default: cout << "все остальное";
}
cout << endl;
_getch();
return 0;
}
-----------------------------------------------------------------------------------------
//пример 51.
Распознавание вводимых символов
int main()
{
Char symbol;
cin >> symbol;
switch (symbol)
{
case '0':
case '1':
case '2':
case '3': cout << "cifra";break;
case 'a':
case 'b':
case 'c': cout << "bukva"; break;
case 'A':
case 'B':
case 'C': cout << "BUKVA";break;
default: cout << "?????";
}
cout << endl;
_getch();
return 0;
}
-----------------------------------------------------------------------------------------
//пример 52.
Вывод сообщений о работе программы
int main()
{
Char err;
cin >> err;
switch (err)
{ case '0': cout << "normal";break;
case '2':
case '4':
case '6': cout << "file";break;
case '7':
case '9': cout << "cod " << err; break;
default: cout << "error =" << err;
}
cout << endl;
_getch();
return 0;
}
-----------------------------------------------------------------------------------------
//пример 53.
Селектор перечислимого типа
Обратите внимание на организацию вывода значения переменной перечисляемого типа:
int main()
{
enum Season {Winter, Spring, Summer, Autumn};
Season p1;
Int i;
cin >> i;
Switch (i)
{ case 0: p1 = Winter; break;
case 1: p1 = Spring; break;
case 2: p1 = Summer; break;
case 3: p1 = Autumn; break;
}
//хотя гораздо проще записать вместо оператора switch (i){} оператор
// p1 = Season(i);
switch (p1)
{case Winter: cout << "Winter"; break;
case Spring: cout << "Spring"; break;
case Summer: cout << "Summer"; break;
case Autumn: cout << "Autumn"; break;
}
cout << endl;
_getch();
return 0;
}
-----------------------------------------------------------------------------------------
//пример 54.
Селектор логического типа
// поиск max (x+y+z, xyz)
int main()
{
double X,Y, Z, Max, a, b;
cout << "Input X, Y, Z:";
cin >> X >> Y >> Z;
a = X + Y + Z;
b = X * Y * Z;
switch (int(a > b))
{ case 1: Max = a; break;
case 0: Max = b; break;
}
cout << "Max=" << Max <<endl;
_getch();
return 0;
}
-----------------------------------------------------------------------------------------
//пример 55.
определение нажатия управляющей клавиши-стрелки:
В IBM-совместимых компьютерах каждой клавише присваивается скан-код, с помощью которого драйвер клавиатуры распознает, какая клавиша была нажата. При нажатии некоторых клавиш (в том числе, и стрелок) генерируется «расширенный» скан-код, состоящий из двух байтов – «префикса» (обычно это E0) и собственно кода клавиши. В рассматриваемой ниже программе первый вызов функции _ getch () как раз и считывает первый байт расширенного кода («префикс»). Второй вызов функции _ getch () считывает собственно код клавиши, который затем и анализируется.
int main()
{
Int key;
printf("\n najmite ctrelku::\n ");
key = _getch();
key = _getch();
switch (key)
{ case 77: printf("strelka vpravo \n "); break;
case 75: printf("strelka vlevo \n "); break;
case 72: printf("strelka vverx \n "); break;
case 80: printf("strelka vniz \n "); break;
default: printf("ne strelka \n "); break;
}
_getch();
return 0;
}
-----------------------------------------------------------------------------------------






