вирази зі сталими

вирази зі сталими

У ряді випадків C ++ вимагає, щоб обчислюється значення виразу було целочисленной константою. Це відноситься до кордонів масивів, розмірами бітових полів, значенням ініціалізаторів елементів перерахування. Вирази зі сталими є незмінні цілочисельні значення. Вони будуються на основі литералов, елементів перерахування (про них мова попереду), проініціалізувати цілочисельних констант, виразів, побудованих на основі операції sizeof.

Константне вираз не змінює свого значення. Тому константний вираз не може бути ім'ям змінної або виразом, який включає ім'я змінної.

Вирази зі сталими обчислюються на стадії трансляції, а тому в вирази зі сталими не можуть використовуватися функції, об'єкти класів, покажчики, посилання, операція кома і операція присвоювання.

Константне вираз може складатися з литералов, імен констант, елементів перерахування (про них пізніше), може містити символи арифметичних операцій, які пов'язують вирази зі сталими.

Основне призначення константного виразу в C ++ - фіксація значень обмеженого безлічі значень, призначених для організації управління процесом виконання програми, завдання зумовлених характеристик об'єктів (наприклад, розмір масиву). Управління виконанням та характеристика розмірності не вимагає особливої ​​точності. Органи управління повинні бути максимально простими, кількість елементів і довжина в байтах задаються цілочисельними значеннями. Тут немає проблем, пов'язаних з точністю обчислення, тут досить значний інтегрального типу.

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

Константне вираз не може містити операцію присвоювання, операції інкрементація і декрементаціі.

А ось операції порівняння, арифметичні операції, операція sizeof і, як не дивно, операція кома не викликають заперечень транслятора (транслятор і рахувати вміє, і порівнювати, він і розміри визначає, а також розуміє, яке значення слід привласнити висловом, який містить символ операції кома ).

Схожі статті