פורסם 2007 בספטמבר 3018 שנים לפי מה שידוע לי קיימים שני סוגי קידום PRE ו POSTקידום PRE:++var;קידום POST:var++;עכשיו אני שואל את עצמי מה ההבדל? כבר הרבה זמן אני מנסה להבין את ההבדל..והאם ה FOR הזה:for(i=0;i<n;++i)שונה מה FOR הזהfor(i=0;i<n;i++)?אם כן במה?תדוה רבה על העזרה.
פורסם 2007 בספטמבר 3018 שנים שתי הלולאות אינן שונה.נסה את הקוד הבא:int f=1;cout << f++ << endl;f=1;cout << ++f << endl;הראשון ידפיס 1 ואילו השני 2 כיוון שבראשון פעולת ההוספת התבצעה אחרי ההדפסה ואילו בשני לפני ההדפסה.
פורסם 2007 באוקטובר 118 שנים בדיוק. בכל מקרה, הימנע מלהשתמש באופן הכתיבה הזה. הוא מאוד מבלבל ולא קריא.
פורסם 2007 באוקטובר 118 שנים בדיוק. בכל מקרה, הימנע מלהשתמש באופן הכתיבה הזה. הוא מאוד מבלבל ולא קריא.לחלוטין לא מסכים. אין שום דבר מבלבל ב-i++ או ב-++i כשלעצמו. בטח שזה לא בעיה בתוך אזור for שמיועד לכך.
פורסם 2007 באוקטובר 118 שנים התכוונתי להימנע מלהשתמש בערך עצמו. לדוגמה, קוד כזה:while (--i > 0)הוא מכוער.
פורסם 2007 באוקטובר 118 שנים בסופו של דבר זה עניין של סגנון.במקרה זה לדוגמא, אני לא מסכים. זה קוד סטנדרטי לחלוטין והוא חלק סביר, שכיח ותקין לחלוטין בשפת C. אתה יכול למצוא אותו כמעט בכל מקום (למעשה בכל קוד C שאני אי פעם ראיתי, מפרוייקטים קטנים עד עצומים).לטוב או לרע, להרבה דברים ב-C יש side effects, ויש הרבה ביטויים של C שכל מתכנת C נורמלי צריך להכיר ולעקוב אחריהם בקלות.לדוגמא הלולאה הבאה, שממש ברור מה היא עושה.while (len--) *dst++ = *src++;אני מאמין שהקוד פחות קריא כשכותבים אותו ככה:while(len != 0){ len--; *dst = *src; src++; dst++;}
פורסם 2007 באוקטובר 118 שנים בדוגמה הראשונה שלך, לקח לי זמן להבין אם הלולאה תרוץ len או len+1 פעמים.בדוגמה השנייה לא.אישית, הייתי כותב את הקוד ככה:for ( ; len != 0 ; --len){ *dst = *src; ++dst; ++src;}לדעתי זה הכי ברור. זה ברור ש-len משמש כאינדקס עבור הלולאה.כשיש לך לולאה פשוטה שאתה יכול להגדיר לה התחלה, קידום וסוף, משתמשים ב-for. ברוב המקרים הקומפיילר גם יודע לייעל לולאות כאלה.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.