الدرس 11: المعاملات العلاقية والمنطقية
هذه المعاملات ضرورية لاتخاذ القرارات (التحكم في التدفق).
المعاملات العلاقية
تقارن المعاملات العلاقية بين قيمتين وتُرجع نتيجة منطقية (في C، 0 تعني خطأ (False)، وأي قيمة غير صفرية، وعادةً ما تكون 1 تعني صح (True)).
| المعامل | الوصف | مثال |
|---|---|---|
== | التساوي | x == y |
!= | عدم التساوي | x != y |
> | أكبر من | x > y |
< | أصغر من | x < y |
>= | أكبر من أو يساوي | x >= y |
<= | أصغر من أو يساوي | x <= y |
تحذير: من الأخطاء الشائعة استخدام علامة يساوي واحدة (=) (للتخصيص) بدلاً من علامة يساوي المزدوجة (==) (للمقارنة). هذا الخطأ غالباً ما يؤدي إلى ثغرات حيث يعيد التخصيص نفسه قيمة غير صفرية (True).
المعاملات المنطقية
تجمع المعاملات المنطقية بين تعبيرين علاقيين أو أكثر.
| المعامل | الوصف | مثال |
|---|---|---|
&& | و (AND المنطقية) | (age > 18) && (is_citizen) (True إذا كان كلاهما صحيحاً) |
| ` | ` | |
! | ليس (NOT المنطقية) | !(is_raining) (يعكس القيمة المنطقية) |
تقييم الدائرة القصيرة (Short-Circuit Evaluation)
تستخدم لغة C تقييم الدائرة القصيرة لـ && و ||:
- في
E1 && E2، إذا كان E1 خطأ (0)، لا يتم تقييم E2 أبداً. - في
E1 || E2، إذا كان E1 صحيحاً (غير صفر)، لا يتم تقييم E2 أبداً. هذا يحسن الأداء ويمنع الآثار الجانبية في التعبير الثاني إذا كان الأول يحدد النتيجة.