שימוש לא שגרתי ל default ב switch (ב C)

Rשף

New member
שימוש לא שגרתי ל default ב switch (ב C)

העתקתי ביד חופשית, סילחו לי על בעיות סינטקס.
למה זה טוב ?
switch (x) {
default:
case 'a':
do_this();
break;
case 'b':
do_that();
break;
}
 

nocgod

New member
לי זה נראה קצת על message passing

עבור הודעה X בצע א
עבור הודעה Y בצע ב
עבור הודעה Z בצע ג
עבור הודעה לא ידועה - בצע ת
 

BravoMan

Active member
התגובה הראשונה שלי היית:

:כדי לבלבל את האויב, כי זה למעשה אומר:
אם 'a' אז תעשה א'
אם 'b' אז תעשה ב'
ואם משהו אחר אז תעשה את מה שעשית עבור 'a'.

אבל, ב-SrtackOverflow מצאו שימוש מעניין לזה:
http://stackoverflow.com/a/9168644
נראה שאפשר להשתמש בזה כדי "לפרוס" לולאה (לצמצם את כמות הפעמים שהלולאה מתבצעת) ובכך לייעל מטלה כמו העתקת בתים.

נראה גם, שלפי הסטנדרט זה כלל לא משנה היכן יופיע סעיף ה-default, כי זו בסה"כ תווית שאין לה כל משמעות חוץ מלהיות יעד של goto (ומשפט case הוא למעשה אוסף של goto).

מה שחשוב לשים לב בדוגמה שלך הוא שיש "fall through", כלומר אין break אחרי default וממשיכים לסעיף הבא.
 

nocgod

New member
פספסתי את זה לחלוטין :)

 
למעלה