Действие присвояване Означава се със знака = . Изпълнява се с два операнда.. Има следния общ вид: променлива = операнд Това действие предизвиква изчисляване стойността на операнда и присвояване на тази стойнст на променливата. Ако на края на тази конструкция се добави ; /точка и запетая/, тя се превръща в инструкция за присвояване: променлива = операнд ; Допустимо е обединяване на действие присвояване. В резултат може да се присвои една и съща стойност на няколко променливи: 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. |