Використання різних типів виразів. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Використання різних типів виразів.



Комбінація знаків операцій і операндів, результатом якої є певне значення, називається виразом. Знаки операцій визначають дії, що повинні бути виконані над операндами. Кожен операнд у виразі може бути виразом. Значення виразу залежить від розташування знаків операцій і круглих дужок у виразі, а також від пріоритету виконання операцій.

У мові Сі присвоювання також є виразом, і значенням такого виразу є величина, що привласнюється.

При обчисленні виразів тип кожного операнда може бути перетворений до іншого типу. Перетворення типів можуть бути неявними, при виконанні операцій і викликів функцій, чи явними, при виконанні операцій приведення типів.

Операнд - це константа, літерал, ідентифікатор, виклик функції, індексний вираз, вираз вибору елемента або більш складний вираз, сформований комбінацією операндів, знаків операцій і круглих дужок. Будь-який операнд, що має константне значення, називається константним виразом. Кожен операнд має тип.

Якщо в якості операнда використовується константа, то йому відповідає значення і тип константи, що його представляє. Ціла константа може бути типу int, long, unsigned int, unsigned long, у залежності від її значення і від форми запису. Символьна константа має тип int. Константа дійсного типу завжди має тип double чи float.

Константний вираз - це вираз, результатом якого є константа. Операндом константного виразу можуть бути цілі константи, символьні константи, константи дійсного типу, константи перерахування, вирази приведення типів, вирази з операцією sizeof і інші константні вирази. Однак на використання знаків операцій у константних виразах накладаються наступні обмеження.

1.У константних виразах не можна використовувати операції присвоювання і послідовного обчислення (,).

2. Операція «адреса» (&) може бути використана тільки при деяких ініціалізаціях.

Вирази зі знаками операцій можуть бути використані у виразах як операнди. Вирази зі знаками операцій можуть бути унарними (з одним операндом), бінарними (із двома операндами) і тернарними (із трьома операндами).

Унарний вираз складається з операнда і попереднього йому знаку унарної операції і має наступний формат:

знак-унарної-операції операнд

Бінарний вираз складається з двох операндів, розділених знаком бінарної операції:

операнд 1 знака-бінарної-операції операнд2

Тернарний вираз складається з трьох операндів, розділених знаками тернарної операції (?) і (:), і має формат:

операнд 1? операнд2: операндЗ Вирази в дужках.

Будь-який операнд може бути укладений у дужки. Вони не впливають на тип і значення виразу, укладеного в дужки. Наприклад, у виразі

(10 + 5)/5

дужки, у яких міститься запис 10 + 5, означають, що величина 10 + 5 є лівим операндом операції ділення. Результат виразу (10 +5) /5 дорівнює 3. Без дужок значення запису 10 + 5/5 дорівнювало 6 11. Хоча дужки впливають на те, яким шляхом групуються операнди у виразі, вони не гарантують детальний порядок обчислення виразу.

Перетворення при обчисленні виразів.

При виконанні операцій виконується автоматичне перетворення типів, щоб привести операнди виразів до загального типу або щоб розширити короткі величини до розміру цілих величин, використовуваних у машинних командах. Виконання перетворення залежить від специфіки операцій і від типу операнда чи операндів.

Розглянемо загальні арифметичні перетворення:

1.Операнди типу float перетворяться до типу double.

2.Якщо один операнд long double, то другий перетвориться до цього ж типу.

З.Якщо один операнд double, то другий також перетвориться до типу double.

4. Будь-які операнди типу char і short перетворяться до типу int. 5.Будь-які операнди unsigned char чи unsigned short перетворяться до типу unsigned int.

6.Якщо один операнд типу unsigned long, то другий перетвориться до типу unsigned long.

7.Якщо один операнд типу long, то другий перетвориться до типу long. 8.Якщо один операнд типу unsigned int, то другий операнд перетвориться до цього ж типу.

Таким чином, при обчисленні виразів операнди перетворяться до типу того операнда, що має найбільший розмір.

Приклад:

double ft, sd;

unsigned char ch;

unsigned long in;

int i;

 



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 41; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.218.218.230 (0.006 с.)