2.6 KiB
title | localeTitle |
---|---|
Ternary Operator | مشغل ثلاثي |
مشغل ثلاثي
يستخدم المبرمجون المشغلين الثلاثيين في C من أجل اتخاذ القرار في مكان البيانات الشرطية إذا كان الأمر آخر . المشغل الثلاثي هو مشغل يأخذ ثلاث حجج. الحجة الأولى هي حجة المقارنة ، والثاني هو النتيجة على المقارنة الحقيقية ، والثالث هو النتيجة على مقارنة خاطئة. إذا كان يساعدك على التفكير في المشغل كطريقة مختصرة لكتابة عبارة if-else.
في ما يلي مثال بسيط لصنع القرار باستخدام if and else :
`int a = 10, b = 20, c;
if (a < b) { c = a; } else { c = b; }
printf("%d", c); `
يأخذ هذا المثال أكثر من 10 أسطر ، لكن هذا ليس ضروريًا. يمكنك كتابة البرنامج أعلاه في 3 أسطر فقط من الشفرة باستخدام المشغل الثلاثي .
بناء الجملة
condition ? value_if_true : value_if_false
يثبت البيان على statement_1 إذا كانت الشرط صحيحًا ، و statement_2 على خلاف ذلك.
فيما يلي المثال أعلاه الذي تمت إعادة كتابته لاستخدام المشغل الثلاثي:
`int a = 10, b = 20, c;
c = (a < b) ? a : b;
printf("%d", c); `
يجب أن يكون إخراج المثال:
10
تم تعيين c
يساوي a
، لأن الشرط a<b
كان صحيحًا.
هذا يبدو بسيطا جدا ، أليس كذلك؟ لاحظ أن value_if_true
و value_if_false
يجب أن يكونا من نفس النوع ، ولا يمكن أن يكونا عبارات كاملة ولكن مجرد تعبيرات.
يمكن أن يتداخل المشغل الثلاثي تمامًا مثل عبارات if-else المتداخلة. فكر في عبارة if-else المتداخلة التالية:
int a = 1, b = 2, ans; if (a == 1) { if (b == 2) { ans = 3; } else { ans = 5; } } else { ans = 0; } printf ("%d\n", ans);
إليك الشفرة الموضحة أعلاه التي تمت إعادة كتابتها باستخدام المشغل الثلاثي المتداخل:
int a = 1, b = 2, ans; ans = (a == 1 ? (b == 2 ? 3 : 5) : 0); printf ("%d\n", ans);
يجب أن يكون إخراج كل من الشفرين المذكورين أعلاه كما يلي:
3