שאלה בסיסית

hatulflezet

New member
שאלה בסיסית

אם יש לי פעולת כפל של שני ints שיכולה לצאת long - ואני רושם זאת כך: long = int * int האם התשובה תחושב כ-long או האם אני צריך לבצע casting על מנת שלא יגלוש לי (בצד של החישוב)? תודה מראש.
 

scalla

New member
תחושב כlong

בC תמיד הוא מחשב בטיפוס הגובה ואם יש צורך בהמהרה הוא ממיר(מה שאין במיקרה זה). אבל כיום בתיכנות בC/C++ במערכות הפעלה 32BIT (חלונות, לינוקס, מק OS) אין הבדל בין int לבין long.
 

gilad_no

New member
תלוי איפה אתה מריץ

בחלונות, INT הוא בעצם LONG. אם זה במערכת 16 ביט, אז LONG הוא SHORT, ובמערכת 64 ביט הוא LONGLONG. זה תלוי בפלטפורמה עליה אתה מהדר את הפרוייקט. LONG תמיד יוכל להכיל אובייקט שווה לו או קטן יותר (SHORT,CHAR). לעומת זאת, אם תנסה להדר במערכת 64 ביט, תקבל אזהרה. לדעתי כדאי לך להשאיר ככה ע"מ שבמקרה הצורך תקבל התרעה על איבוד נתונים כתוצאה מCASTING אוטומטי.
 

hatulflezet

New member
תודה . ואגב

את נושא הגודל שint וגם long הם 4 בתים במערכות 32 של היום אני יודע . השתמשתי בטיפוסים רק לצורך המחשה - מה שהיה חשוב לי זה עקרון החישוב... חוץ מזה שאני לא בטוח שהם אותו גודל תחת סולריס 64 למשל...
 
למעלה