2.6 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	title, localeTitle
| 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