6. Действия и изрази в С++

• Действия, използвани в изразите:
- аритметични действия
- логически действия;
- сравнение;
- присвояване;
- принудително преобразуване типа на операнда;
- условен оператор;
- оператор за последователно изпълнение
• Изрази в С++ . Приоритет на действията в изразите
• Неявно преобразуване на типовете в изразите
• Примери и задачи


преди план следва
 
 

Действие присвояване


Означава се със знака = . Изпълнява се с два операнда.. Има следния общ вид:

променлива = операнд

Това действие предизвиква изчисляване стойността на операнда и присвояване на тази стойнст на променливата. Ако на края на тази конструкция се добави ; /точка и запетая/, тя се превръща в инструкция за присвояване:
променлива = операнд ;

Допустимо е обединяване на действие присвояване. В резултат може да се присвои една и съща стойност на няколко променливи:
v1 = v2 = 10;
Действието присвояване се извършва от дясно на ляво: Първо на v2 се присвоява стойността 10, след това стойността на v2 се присвоява на v1. Възможно е типовете на променливата и операнда при действие присвояване да бъдат различни. В такъв случай стойността на операнда се преобразува така, че да съответства на типа на променливата. Възможна е загуба на информация.

Примери:
int a, b ;
a = b = -3.9 ; // а и b приемат стойност -3, вместо -3.9.

int x;
double y ;
x = y = -3.9; // y приема стойност -3.9, x приема стойност -3.

В крайна сметка типът на резултата от действие присвояване е равен на типа на променливата от ляво на знака =.

Разновидности на действие присвояване:

Те се означават със следните знаци: += -= *= /= %= ++ --. Имат следния смисъл:

a += b е еквивалентно на a = a + b
a -= b е еквивалентно на a = a - b
a *= b е еквивалентно на a = a * b
a /= b е еквивалентно на a = a / b
a %= b е еквивалентно на a = a % b
a ++ е еквивалентно на a = a + 1
++ а е еквивалентно на a = а + 1
-- a е еквивалентно на a = а - 1
a -- е еквивалентно на a = а – 1

Ако към края на тези конструкции се добави точка и запетая, се получава съкратен запис на инструкция за присвояване.

Поставянето на знаците ++ или -- преди или след променливата има определен и то много съществен смисъл. Ако знаците са преди променливата, първо се променя стойността на променливата и след това променливата се използва с новата си стойност. Ако знаците са след променливата, първо променливата се използва със старата си стойност и след това нейната стойност се променя:

int x=5;
double y = 2.4 ;
char c = ‘A’;
cout<< ++x << endl; // извежда 6
cout<< y++ << endl; // извежда 2.4
cout<< "y = " << y; // извежда 3.4
cout<<++c; // извежда B

Принудително преобразуване типа на операнда:

( тип) операнд

Тoва действие е унарно. Предизвиква изчисляване стойността на операнда и преобразуване на резултата към указания в скобите тип.

Пример:
double v = 3.6;
cout<<(int)v; // извежда 3
cout<< v; // извeжда 3.6

Трябва да се отбележи, че този оператор не променя типа на операнда -променливата v. Тя си остава от тип double и продължава да участва в програмата със стойност 3.6.

Пример:
char ch='*';
cout<<(int)ch; // извежда 42, кода ASCII на символа ‘*’
cout<<(char)65; // преобразува 65 в тип char, извежда се символа A, имащ код ASCII 65

Условен оператор

Това е триместен оператор. Има следния синтаксис:

операнд1 ? операнд2 : операнд3

Трите операнда са изрази. Ако операнд1 е различен от 0 , резултатът от операцията е стойността на операнд2, в противен случай резултатът от операцията е стойността на операнд3.
int x = -1;
x ? cout << x + 1:cout << x - 1; // извежда 0

Оператор за последователно изпълнение

Означава се със знакa , /запетая/. Има следния синтаксис:

операнд1 , операнд2

При изпълнение, последователно се изчисляват операнд1 и операнд2 . Резултатът от изпълнението на оператора е стойността на операнд2.

 
 
 
 
преди план следва