Operatorların prioriteti

Emil Hüseynov

Aşağıdakı koda nəzər salın:

$mysteryNumber = 5 + 6 * 3;

$mysteryNumber adlı dəyişənin qiyməti hansı ədədə bərabər olacaq: 23 və ya 33? Bu ifadədə toplama və vurma riyazi operatorlarından istifadə edilib. Hansı əməliyyat birinci yerinə yetiriləcək? Əgər birinci toplama, sonra vurma əməliyyatları icra olunsa, cavab 33-ə bərabər olacaq. Doğru cavab 23-dür, çünki vurma əməli toplama ilə müqayisədə birinci icra olunur.

Operatorların icra ardıcıllığı onların prioriteti ilə təyin edilir. Operatorların prioriteti riyaziyyatçılar tərəfindən düşünülüb və siz onu məktəbdə riyaziyyat fənnində öyrənmisiniz. Vurma və bölmə əməliyyatlarının prioriteti toplama və çıxmadan daha yüksəkdir. Prioriteti yüksək olan operatorlar birinci icra olunurlar.

Operatorların prioriteti: yüksəkdən aşağıya doğru
Operator Assosiativlik (icra ardıcıllığı)
() soldan sağa
** sağdan sola
* / % soldan sağa
+ - soldan sağa
= soldan sağa

Bütün operatorların prioriteti ilə burda tanış ola bilərsiniz.

Assosiativlik prioriteti eyni olan operatorların icra ardıcıllığını təyin etməyə imkan verir. Məsələn:

<?php

error_reporting(E_ALL);

$result = 2 ** 2 ** 3;
printf("%d", $result);

?>

Çıxış:

256

Bu ifadədə istifadə edilən hər iki qüvvətə yüksəltmə operatorunun prioriteti eynidir. Bu halda həmin operatorun assosiativliyi sağdan sola (yuxarıdakı cədvəli nəzərdən keçirin) hesablanır. Birinci 2 ** 3 hesablanır, nəticə 8-ə bərabərdir. Sonra 2 ** 8 hesablanır.

Lakin operatorların icra ardıcıllığını mötərizələrin köməyilə dəyişdirmək olar, çünki onun prioriteti digər operatorlardan yüksəkdir.

<?php

error_reporting(E_ALL);

$result = (2 ** 2) ** 3;
printf("%d", $result);

?>

Çıxış:

64

Göründüyü kimi mötərizənin köməyilə qüvvətə yüksəltmə operatorunun assosiativliyi dəyişdirildi. Əvvəlcə 2 ** 2 hesablanır və nəticə 4-dür. Sonra 4 ** 3 ifadəsinin qiyməti hesablanır.

Şərh yazmaq üçün hesabınıza daxil olun.

0
0