5 תשובות
שכחת לכתוב אץ המילה else
חוץ מזה שיש לי בעיה אישית עם scanf ("%d")
הקוד נראה בסדר

חוץ מ2 דברים. 1 אין בדיקת תקינות של הקלט
2. אין הגנת overflow בx*-1
מה יקרה אם x==int_min?
שואל השאלה:
אתם יכולים להסביר לי מה זה בדיקת קוד?
אנונימית
אני הייתי עושה את הקוד קצת שונה, הייתי ניגש ישר לmsb, ומחסר אותו מעצמו
x= (sizeof (int) * char_bit - 1)^x- (sizeof (int) * char_bit - 1)
או אם הייתי ממש דואג ליעילות אני יכול לחסוך את כל פעולת החיסור, שהיא די יקרה, על ידי קאסטינג לסטראקט אנונימי שבו הmsb הוא bitfield, והשמת 0 בתוכו
( (struct (unsigned int rest: sizeof (int) *char_bit - 1; unsigned int msb: 1;)) x).msb=0