Вирази і Оператори h2>
У C + + є багатий набір операцій, за допомогою яких в
виразах утворюються нові значення і змінюються значення змінних. Потік
управління у програмі задається за допомогою операторів, а опису використовуються
для введення в програмі імен змінних, констант і т.д. Зауважте, що
опису є операторами, тому вони вільно можуть поєднуватися з іншими
операторами. p>
Вирази h2>
У C + + є велике число операцій, і вони будуть пояснюватися
там, де (і якщо) це буде потрібно. Слід врахувати, що операції p>
~ p>
доповнення p>
& p>
І p>
^ p>
виключає АБО p>
| p>
включає АБО p>
<< p>
логічний зсув вліво p>
>> p>
логічний зсув вправо p>
застосовуються до цілих, і що немає окремого типу даних для
логічних дій. p>
Сенс операції залежить від числа операндів; Унарне &
є операцією взяття адреси, а бінарне & - це операція логічного
І. Сенс операції залежить також від типу її операндів: + у виразі a + b
означає додавання з плаваючою точкою, якщо операнди мають тип float, але ціле
додавання, якщо вони типу int. p>
У C + + є операція привласнення =, а не оператор
привласнення, як в деяких мовах. Таким чином, надання може
зустрічатися в несподіваному контексті; наприклад, x = sqrt (a = 3 * x). Це буває
корисно. a = b = c означає привласнення c об'єкту b, а потім об'єкту a. Іншим
властивістю операції привласнення є те, що вона може поєднуватися з
більшістю бінарних операцій. Наприклад, x [i 3] *= 4 означає x [i +3] = x [i +3] * 4,
за винятком того факту, що вислів x [i 3] обчислюється тільки один раз.
Це дає привабливу ступінь ефективності без необхідності звернення до
оптимізуючий компілятор. До того ж це більш коротко. p>
У більшості програм на C + + широко застосовуються
покажчики. Унарний операція * разименовивает * 3 покажчик, тобто * p є об'єкт,
на який вказує p. Ця операція також називається непрямою адресацією.
Наприклад, якщо є char * p, то * p є символ, на який вказує p.
Часто при роботі з покажчиками бувають корисні операція збільшення + + і операція
зменшення --. Припустимо, p вказує на елемент вектора v, тоді p + + робить
p вказує на наступний елемент. p>
Оператори Вирази h2>
Самий звичайний вид оператора - оператор вираз. Він
складається з виразу, за яким слідує крапка з комою. Наприклад: p>
a = b * 3 + c; p>
cout << "go go go"; p>
lseek (fd, 0,2); p>
Порожній оператор p>
Найпростішим формою оператора є порожній оператор: p>
; p>
Він не робить нічого. Однак він може бути корисний у тих
випадках, коли синтаксис вимагає наявність оператора, а вам оператор не потрібен. p>
Блоки h2>
Блок - це можливо порожній список операторів, укладений
у фігурні дужки: p>
(a = b 2; b + +;) p>
Блок дозволяє розглядати кілька операторів як
один. Область видимості імені, описаного в блоці, тягнеться до кінця блоку.
Назва можна зробити невидимим за допомогою описів такого ж імені у внутрішніх
блоках. p>
Оператори if p>
Програма в наступному прикладі здійснює перетворення
дюймів в сантиметри і сантиметрів у дюйми; передбачається, що ви вкажете
одиниці вимірювання даних, що вводяться, додаючи i для дюймів і c для сантиметрів: p>
# include p>
main () p>
( p>
const float fac = 2.54; p>
float x, in, cm; p>
char ch = 0; p>
cout << "Введіть довжину:"; p>
cin>> x>> ch; p>
if (ch == "i") (//inch - дюйми p>
in = x; p>
cm = x * fac; p>
) p>
else if (ch == "c")// cm - сантиметри p>
in = x/fac; p>
cm = x; p>
) p>
else p>
in = cm = 0; p>
cout <
) p>
Зауважте, що умова в операторі if повинно бути
укладено в круглі дужки. p>
Оператори switch p>
Оператор switch виробляє зіставлення значення з
безліччю констант. Перевірки в попередньому прикладі можна записати так: p>
switch (ch) ( p>
case "i": p>
in = x; p>
cm = x * fac; p>
break; p>
case "c": p>
in = x/fac; p>
cm = x; p>
break; p>
default: p>
in = cm = 0; p>
break; p>
) p>
Оператори break застосовуються для виходу з оператора switch.
Константи у варіантах case повинні бути різними, і якщо перевіряти значення
не збігається з жодною з констант, вибирається варіант default. Програмістові
не обов'язково передбачати default. p>
Оператор while h2>
Розглянемо копіювання рядки, коли задані покажчик p
на її перший символ і покажчик q на цільову рядок. За угодою рядок
закінчується символом з цілим значенням 0. p>
while (p! = 0) ( p>
* q = * p;// скопіювати символ p>
q = q 1; p>
p = p +1; p>
) p>
* q = 0;// завершальний символ 0 скопійований не був p>
Наступний після while умова повинна бути укладена у
круглі дужки. Умова обчислюється, і якщо його значення не нуль, виконується
безпосередньо наступний за ним оператор. Це повторюється до тих пір, поки
обчислення умови не дасть нуль. p>
Цей приклад дуже широка. Можна використовувати
операцію + + для безпосереднього зазначення збільшення, і перевірка спроститься: p>
while (* p) * q + + = * p ++; p>
* q = 0; p>
де конструкція * p + + означає: "взяти символ, на
який вказує p, потім збільшити p. " p>
Приклад можна ще спростити, так як покажчик p
разименовивается двічі за кожен цикл. Копіювання символу можна робити тоді
ж, коли проводиться перевірка умови: p>
while (* q + + = * p + +); p>
Тут береться символ, на який вказує p, p
збільшується, цей символ копіюється туди, куди вказує q, і q
збільшується. Якщо символ ненульовий, цикл повторюється. Оскільки вся робота
виконується в умові, не потрібно ні одного оператора. Щоб вказати на це,
використовується порожній оператор. C + + (як і C) одночасно люблять і ненавидять за
можливість такого надзвичайно короткого орієнтованого на виразність
програмування. p>
Оператор for h2>
Розглянемо копіювання десяти елементів одного вектора в
інший: p>
for (int i = 0; i <10; i + +) q [i] = p [i]; p>
Це еквівалентно p>
int i = 0; p>
while (i <10) ( p>
q [i] = p [i]; p>
i ++; p>
) p>
але більш легкість для читання, оскільки вся інформація,
управляє циклом, локалізована. При застосуванні операції + + до цілої змінної
до неї просто додається одиниця. Перша частина оператора for не обов'язково
повинна бути описом, вона може бути будь-яким оператором. p>
Наприклад:
p>
for (i = 0; i <10; i + +) q [i] = p [i]; p>
теж еквівалентно попереднього запису за умови, що i
відповідним чином описано раніше. p>
Описи h2>
Опис - це оператор, що вводить ім'я в програмі. Воно
може також ініціалізувати об'єкт з такою назвою. Виконання опису
означає, що коли потік управління доходить до опису, обчислюється
ініціалізує вираз (ініціалізатор) і виробляється ініціалізація.
Наприклад: p>
for (int i = 1; i p>
Список літератури h2>
Для підготовки даної роботи були використані матеріали
з сайту http://www.realcoding.net
p>