freeCodeCamp/guide/arabic/c/ternary-operator/index.md

73 lines
2.6 KiB
Markdown
Raw Normal View History

---
title: Ternary Operator
localeTitle: مشغل ثلاثي
--- ## مشغل ثلاثي
يستخدم المبرمجون المشغلين الثلاثيين في 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
`