השוואה בין int ו-short

otherside3

New member
השוואה בין int ו-short

הי
משהו קטן שקצת הסתבכתי איתו
אם אני מגדיר:
קוד:
unsigned int x = 0xDEADBEEF;
unsigned short y = 0xFFFF;
ואני מבצע את הבדיקה
if (x>(signed short)y)
אז למה בעצם התוצאה של ה-if יוצאת שלילית? יש לי באגף שמאל משתנה unsigned ובצד ימין signed, וע"פ מה שלמדתי אם יש לי משוואה שבאחד הצדדים יש unsigned אז כל הביטוי הופך להיות מבוטא במונחים של unsigned..

)(ראיתי שאם אני משנה את ה-cast להיות signed int במקום short התוצאה יוצאת חיובית, אז אולי הבעיה כאן היא בטיפוסים השונים?)

תודה!
 
אולי זה הפתרון

אתה מנסה להשוות signed short ל-int. אז ההמרה היא ל-unsigned int.
כלומר 0xFFFF אמור להיות unsigned int וכנראה זה מומר ל-0x0000FFFF ב-int שזה הרבה פחות מ-0xDEADBEEF.
כשאתה ממיר ל-signed short ואחר כך ל-unsigned short מה שקורה שזה מומר קודם ל-0xFFFFFFFF ואחר כך ל-unsigned int.
 

otherside3

New member
למה המרה ל-signed short ממירה קודם ל-

0xFFFFFFFF?
זאת המרה ל-int ולא ל-short, לא?
 
למעלה