English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在本文中,您将了解用于计算带有运算符和操作数的表达式的规则。
运算符优先级是用于计算给定数学表达式的规则集合。当在单个表达式中使用多个运算符时,每个部分按照称为运算符优先级的特定顺序进行计算。某些运算符具有比其他运算符更高的优先级,这会影响表达式的计算方式。
下表列出了Swift中الوظيفة的优先级。它在表格中显示的越高,其优先级越高。
مجموعة العمل | مثال |
位改变优先级 | >> &<< &>> >> |
مستوى الأولوية للضرب | &* % & * / |
مستوى الأولوية للجمع | | &+ &- + – ^ |
تكوين النطاق | ..< … |
مستوى الأولوية للتحويل النوعي | is as |
مستوى الأولوية للجمع الكوني | ?? |
مستوى الأولوية للمقارنة | != > < >= <= === == |
مستوى الأولوية للتحديد المنطقي | && |
مستوى الأولوية لتحليل المنطق | || |
أولويات افتراضية | ~> |
أولويات الترميز الثلاثي | ?: |
أولويات الدوال السريعة | ( ) |
أولويات الأوامر | |= %= /= &<<= &>>= &= *= >>= <<= ^= += -= |
let x = 4 + 5 * 5 print(x)
عندما تشغل البرنامج المذكور أعلاه، الناتج سيكون:
29
في المثال السابق، إذا تم قراءة التعبير من اليسار إلى اليمين، قد تتوقع أن تكون النتيجة 45. ولكن يتمتع عمود الضرب الأولوية أعلى من عمود الجمع، لذا يتم حساب التعبير 4 + 5 * 5 كـ 4 + (5 * 5). لذا، يتم طباعة (x) على الشاشة 29.
الخطوات | الوظيفة | التعبير | من القيمة التي يعودها التعبير |
---|---|---|---|
1 | * | 5 * 5 | 25 |
2 | + | 4 + 25 | 29 |
3 | = | print(x) | 29 |
var y = 15 y += 10 - 2 * 3 print(y)
عندما تشغل البرنامج المذكور أعلاه، الناتج سيكون:
19
في المثال السابق، يتم تعيين التعبير var y = 15 لـ 15.
في التعبير التالي y + = 10-2 * 3، يتمتع عمود الضرب الأولوية أعلى من عمود الحساب المركب (+ =).
لذلك، يتم حساب التعبير y + = 10-2 * 3 كـ y = y + (10-(2 * 3)).
الخطوات | الوظيفة | التعبير | القيمة التي يعودها التعبير |
1 | = | var y = 15 | 15 |
2 | * | 2 * 3 | 6 |
3 | -- | 10-6 | 4 |
4 | + = | 15 + 4 | 19 |
على الرغم من أن هناك قواعد مسبقة معرفة من خلال مستوى الأولوية للوظائف لتحليل التعبير، قد تود أن تعرف ما يحدث إذا كان هناك أكثر من وظيفة ذات مستوى أولوية متساوية. تحديد العمل يحدد كيفية دمج العمل ذات المستوى الأولوية المتساوية.
في Swift، يمكن أن يكون العمل على اليسار أو اليمين أو لا يكون له تحديد. عند استخدام العمل في التعبير، يتم تحديد العمل على اليسار من خلال مجموعة العمل من الجانب الأيسر، والعمل على اليمين والعمل غير المرتبط لمحدد غير محدد.
الجدول التالي يوضح تحديد العمل والاولوية للوظائف في Swift.
مجموعة العمل | مثال | التحديد |
---|---|---|
مستوى الأولوية للتحويل بالحركة | >>&<<&>> >> | لا |
مستوى الأولوية للضرب | &*%&* / | الجمع اليساري |
مستوى الأولوية للجمع | | &+&-+-^ | الجمع اليساري |
مستوى الأولوية لتكوين النطاق | .. <... | لا |
مستوى الأولوية للتحويل النوعي | is a | لا |
مستوى الأولوية للجمع الكوني | ?? | الاتحاد الأيمن |
مستوى الأولوية للمقارنة | !=> <> = <= === == | لا |
مستوى الأولوية للوصل المنطقي | && | الجمع اليساري |
مستوى الأولوية لتحليل المنطق | || | الجمع اليساري |
أولويات افتراضية | ~> | لا |
أولويات الترميز الثلاثي | ؟: | الاتحاد الأيمن |
أولويات الدوال السريعة | () | الاتحاد الأيمن |
أولويات الأوامر | | =%= / =&<< =&>> =&= * = >> = << = ^ = | الاتحاد الأيمن |
let x = 40 / 2 * 10 print(x)
عندما تشغل البرنامج المذكور أعلاه، الناتج سيكون:
200
في البرنامج المذكور أعلاه، يتم حساب التعبير من اليسار إلى اليمين، لأن العناصر ينتمون إلى مجموعة الحساب ضرب، ولديهم الاتحاد الأيسر. لذلك، سيتم تنفيذ عملية التقسيم قبل الحساب، والنتيجة هي 200. ماذا إذا كنت ترغب في تنفيذ الحساب الضربي أولاً؟ تحتاج إلى وضع تعبير 2 * 10 داخل الأقواس الكبيرة، مثلما هو موضح أدناه:
let x = 40 / (2 * 10) print(x)
عندما تشغل البرنامج المذكور أعلاه، الناتج سيكون:
2
لا تحتاج إلى تذكر جدول الأولويات والاتحاد. في معظم الحالات، الأولويات والاتحاد نفسهما مهمان جدًا. إذا كان لديك أي استفسار، يمكنك دائمًا استخدام هذا الجدول كمرجع. بالإضافة إلى ذلك، من الأفضل استخدام الأقواس لتسهيل فهم الكود.