Пріоритет і порядок оцінки

Оператори перераховані в порядку убування пріоритету. Якщо в одному рядку або групі знаходиться декілька операторів, вони мають рівний пріоритет.

Всі оператори простого і складеного присвоювання мають рівний пріоритет.

Вираз може містити кілька операторів з рівним пріоритетом. Якщо кілька таких операторів знаходяться в вираженні на одному рівні, обчислення виконується згідно їх асоціативності (або справа наліво, або зліва направо). Напрямок обчислення не впливає на результати виразів, в яких на одному і тому ж рівні знаходиться більше одного оператора множення (*) або складання (+) або бінарного побітового оператора ( | ^). Порядок операцій не визначений мовою. Якщо компілятор може гарантувати узгоджений результат, то він може обчислювати такі вирази в будь-якому порядку.

Тільки оператори послідовного обчислення (,), логічного І ( ), Логічного АБО (||), умовного виразу (.) І виклику функції створюють точки слідування і тим самим гарантують певний порядок обчислення своїх операндів. Оператор виклику функції являє собою пару дужок, наступних за ідентифікатором функції. Оператор послідовного обчислення (,) гарантує, що його операнди будуть обчислюватися зліва направо. (Зверніть увагу, що оператор-кома у виклику функції не є оператором послідовного обчислення і не надає таких гарантій.) Додаткові відомості див. У розділі Точки проходження.

Логічні оператори також гарантують обчислення своїх операндів зліва направо. Однак вони обчислюють найменшу кількість операндів, необхідне для визначення результату виразу. Це називається "скороченим обчисленням". Таким чином, деякі операнди в вираженні можуть не обчислюватися. Наприклад, у виразі:

Схожі статті