5 תשובות
שכחת לכתוב אץ המילה else
חוץ מזה שיש לי בעיה אישית עם scanf ("%d")
הקוד נראה בסדר
חוץ מ2 דברים. 1 אין בדיקת תקינות של הקלט
2. אין הגנת overflow בx*-1
מה יקרה אם x==int_min?
הקוד נראה בסדר
חוץ מ2 דברים. 1 אין בדיקת תקינות של הקלט
2. אין הגנת overflow בx*-1
מה יקרה אם x==int_min?
שואל השאלה:
אתם יכולים להסביר לי מה זה בדיקת קוד?
אתם יכולים להסביר לי מה זה בדיקת קוד?
אנונימית
אני הייתי עושה את הקוד קצת שונה, הייתי ניגש ישר לmsb, ומחסר אותו מעצמו
x= (sizeof (int) * char_bit - 1)^x- (sizeof (int) * char_bit - 1)
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
( (struct (unsigned int rest: sizeof (int) *char_bit - 1; unsigned int msb: 1;)) x).msb=0
באותו הנושא: