עבור לתוכן

המרת unsigned char ל- int

Featured Replies

פורסם

למה הפלט הוא 255?

unsignchar c = -1;
printf("%d,", c++);

 

פורסם

unsigned אומר שהמספר ללא מינוס, כלומר לא יכול להיות קטן מ-0.

לכן unsigned char הוא מ-0 עד 255.

char הוא בייט אחד (8 ביט).

כשעושים -1 לסוג שהוא unsigned מניב את המספר הכי גדול.

ראה גלישה נומרית / Integer overflow

פורסם
  • מחבר

אחלה תשובה תודה!

האם זה חוקי ומומלץ לכתוב קוד בצורה כזו?

האם התשובה 255 היא חד משמעית לכל קומפיילר?

  • 1 חודש מאוחר יותר...
פורסם

חוקי? כן. מומלץ? ממש לא.

 

רוב הקומפיילרים יתנו אזהרה (warning), כי הם חושבים שהתכוונת להכניס -1 ולא חשבת על הטיפוס.

 

גלישה בד"כ מרמזת על שגיאה בקוד (לא תוכנן למספרים גדולים מספיק) רק לעיתים נדירות (מאוד!) זה נעשה בכוונה תחילה (אל תנסה אם אתה לא יודע ב100% מה אתה עושה!)

ארכיון

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

דיונים חדשים