C++/תנאים: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Ybungalobill (שיחה | תרומות)
Ybungalobill (שיחה | תרומות)
שורה 166:
 
== אופרטור ההתניה ==
 
אופרטור התניה הוא אופרטור טרנארי, כלומר הוא מקבל שלושה אופרנדים. אופרטור זה יראה כך:
<source lang="cpp">
expression ? true_expression : false_expression
</source>
אופרטור זה דומה למשפט if else רגיל; הוא יחשב את הביטוי הראשון (expression), ימיר את ערכו לערך בוליאני, ובהתאם לערך זה יחשב ויחזיר את ערך אחד מהביטויים true_expression או false_expression.
 
ניתן להשתמש באופרטור זה בדרכים שונות. לרוב משתמשים בו כדי לקצר משפטים מהסוג הזה:
<source lang="cpp">
int max;
if(a>b)
max = a;
else
max = b;
</source>
באמצעות המשפט הזה הקוד מקוצר עד לשורה אחת:
<source lang="cpp">
int max = a>b?a:b;
</source>
 
כיוון שמחושב רק אחד מהביטויים השני והשלישי, נוכל לקצר גם משפטי if אחרים. אומנם לא כדאי להגזים, שימוש מופרז עלול לפגוע בקריאות הקוד:
<source lang="cpp">
int result = b!=0 ? a/b : throw math_error();
</source>
במקרה ו-b שווה לאפס, הקוד יזרוק [[C++/חריגות|חריגה]] (throw). אמנם זה לא הנושא כרגע.
 
{{C++|מוגבל=כן}}