עבור לתוכן

בעיה ב C++ עם משתנה מסוג signed short

Featured Replies

פורסם

שלום לכולם,

אני עובד ב-visual studio 2005 ויש לי בעיה די מעצבנת,

הכי פשוט לתאר אותה עם דוגמא:

הצהרתי על משתנה :

signed short int a;

עכשיו אני עושה השמה לערך:

a = 0xae

כעת אם אני מסתכל בערך של a אני רואה שהערך שלו:

a=0xffffae , וזה לא הערך שאני רוצה.

ברור לי ש- a בבינארתי מתחיל ב-1 ולכן הוא חושב שהמספר שלילי, יש דרך לעקוף את זה?

מי שמציע פיתרון אז דבר אחד : אני לא יכול לשנות את הטיפוס ל unsigned , זה קוד חיצוני שאני קורא ממנו.

תודה מראש,

שי

פורסם

נשמע לי מוזר. האם אתה מסתכל על הערך ישר אחרי ההשמה או אחרי שיש מניפולציה אחרת בקוד החיצוני ? למה ש a=0x0ae יתן תוצאה שונה מ a=0xae ? ממה שאני זוכר short הוא לפחות 15 ביט כך שאין לו בעיה להחזיק מספר שכזה.

פורסם

מה ? לא הבנתי משם איך יש בעיה בהשמה ואיפה אתה רואה שהוא עושה פה פעולות על ביטים בכלל.

פורסם

מה קורה אם אתה משים 0x10 ?

תנסה להשתמש בint או ב%d בהדפסה לראות את הערך של המספר.

איך מוגדר בו unsigned short int (הוא מוגדר כ16 ביט - 0x0000 - 0xFFFF )

אתה שם לב שאתה משים ערכים בבסיס אוקטלי (בסיס 8) ?

פורסם

אם אני שם 0x10, אז יש 0x10, כל ערך בין 0x00 עד 0xFFFE ייוצג ככזה ב signed short int. גם 0xAE).

פורסם

יש מצב לSCREENSHOT ?

אני לא מצליח לשחזר את התקלה אצלי...

פורסם
  • מחבר

הבעיה פחות או יותר נפתרה.

כאשר דיבגתי את התוכנה, נעזרתי ב-watch של ה-visual , והערך שהוא הראה היה נראה כשגוי

אבל אם אני מסתכל על הערך ב-hex אני רואה שזה הערך הנכון.

כמו שנאמר באמת כל ערך שה- MSB שלו הוא 1 , נוספים לו FFFFים.

אבל זה לא הערך האמתי שלו, אלא מה שמתורגם..

תודה רבה רבה!!

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים