שיחה:C++/משתנים

תגובה אחרונה: לפני 15 שנים מאת Ybungalobill בנושא אתחול משתנים

שגיאה בגודל תו

עריכה

גודל תו הוא בדיוק בית 1 על פי הסטנדרד, ולא לפחות 1 כפי שנכתב כאן בטבלה. אגב, ראיתי המון קוד שהיה נשבר אם גודלו היה גדול ממש מ1. Thedsadude 09:29, 5 בדצמבר 2007 (IST)תגובה

התקן אומר שגודל ה-char הוא לפחות 8 סיביות, לא בדיוק. לידיעתך לא בכל המחשבים גודל הבית הוא 8 סיביות, יש אפילו מחשבים עשרוניים. יש לך את המקרו: CHAR_BIT בשפת C שאומר לך את מספר הסיביות במשתנה התווי. נראה לי שאני יודע למה אתה מתכוון, אתה מתבלבל כי אתה חושב ש-sizeof מודד את הגודל בביתים? הוא לא. הוא מודד בתוים. sizeof(char)‎ תמיד יחזיר 1. גם אם גודל התו הוא 16 סיביות. למשל אם sizeof(int) == 4 אז זאת לא אומרת שהמשתנה השלם הוא בגודל 4 בתים, אלא שהוא תופס 4 תווים. ראה בספרו של סטרוסטרופ The C++ Programming Language 3rd Edition פרק 4.6, ויקי האנגלית, כאן וכאן. ybungalobill 11:29, 5 בדצמבר 2007 (IST)תגובה
סבבה. תודה על ההערה המחכימה.Thedsadude 11:51, 5 בדצמבר 2007 (IST)תגובה
אהההההההה! עכשיו אני צריך לשנות את ההסבר בספר על C במיליון מקומות. ייאוש! תודה בכל מקרה. Thedsadude 11:53, 5 בדצמבר 2007 (IST)תגובה

אתחול משתנים

עריכה

רצוי לסייג שיש לכך עלות מבחינת ביצועים, ולכן ההמלצה לא יכולה להיות גורפת. Yuvalif

עלות מבחינת ביצועים??? להיפך. לטיפוסים פשוטים זה פחות משמעותי כי האתחול יהיה חד פעמי. לטיפוסים מורכבים (מחלקות עם בנאים) איתחול בשני שלבים גורם לפגיעה בביצועים בשל איתחול ברירת מחדל ואחר כך השמת הערך הרצוי. אתה יכול לגבות את דבריך על ידי דוגמה למה בדיוק אתה מתכוון? ybungalobill 20:15, 16 באוקטובר 2009 (IST)תגובה
חזרה לדף "C++/משתנים".