إنتقل إلى المحتوى الرئيسي

العوامل

الأولوية الأعلى أولًا. كل عامل ثنائي يرتبط من اليسار: a - b - c هو (a - b) - c.

المستوىالعواملالمعنىأنواع المعاملات
1( ) f(…)التجميع، استدعاء دالة مضمَّنة
2! - ~ (أحادية)النفي المنطقي، السالب، النفي على مستوى البت!: أي نوع · -: Integer/Real · ~: Integer
3* /الضرب، القسمةInteger/Real
4+ -الجمع أو الربط، الطرحInteger/Real، أو Text + Text
5<< >>الإزاحة لليسار، الإزاحة الحسابية لليمينInteger
6< <= > >=الترتيبرقمان، أو قيمتا Text
7== !=المساواةأي نوع
8&AND على مستوى البتInteger
9^XOR على مستوى البتInteger
10|OR على مستوى البتInteger
11&&AND المنطقي (يُقيَّم الطرفان دائمًا)أي نوع (قيمة الصدق)
12||OR المنطقي (يُقيَّم الطرفان دائمًا)أي نوع (قيمة الصدق)

لا يوجد عامل باقي القسمة (%)، ولا عامل أُس، ولا العامل الثلاثي (?:)، ولا عامل الفاصلة.

warning

لا تُقيِّم && و|| تقييمًا مختصرًا. يُقيَّم المعاملان دائمًا، الأيسر ثم الأيمن. يُنفَّذ استدعاء الدالة المضمَّنة على اليمين حتى عندما يكون الطرف الأيسر قد حسم النتيجة، وإذا فشل ذلك الاستدعاء يتوقف الإجراء. احمِ الاستدعاء بعبارة if متداخلة بدلًا من ذلك:

text = ClipboardGetText();
idx = StringGetIndexOf(text, ":");

// خطأ: عندما تكون idx هي -1، يظل StringGetSubstring(text, -1, 5) يُنفَّذ ويوقف الإجراء
// if (idx >= 0 && StringGetSubstring(text, idx, 5) == ":here") { ... }

// صحيح: لا يُنفَّذ الاختبار الثاني إلا عندما يتحقق الأول
if (idx >= 0) {
if (StringGetSubstring(text, idx, 5) == ":here") UtilityPrint("found");
}
warning

أولوية العوامل على مستوى البت أدنى من المقارنات (كما في C). يُقرأ flags & 4 == 4 على أنه flags & (4 == 4)، أي flags & true، أي 0. أحِط القناع بأقواس دائمًا: (flags & 4) == 4 أو (flags & 4) != 0.

warning

المقارنات لا تتسلسل. يُقرأ 0 < x < 10 على أنه (0 < x) < 10، وهو يقارن قيمة Bool بقيمة Integer ويكون دائمًا false. اكتب x > 0 && x < 10.