Τι θα τυπώσει το παρακάτω πρόγραμμα;
#include <stdio.h>
int main() {
printf("%d\n", 2000000000 + 2000000000);
return 0;
}
$ ./overflow
-294967296
Τι συνέβη; Πώς το διορθώνουμε;
Ποιος είναι ο τύπος των δύο σταθερών, και ποια η μεγαλύτερη τιμή που χωράει σε αυτόν; Συγκρίνετε το \(4.000.000.000\) με το \(2^{32}\). Για τη διόρθωση, χρειάζεστε έναν τύπο με περισσότερα bits, τόσο για τις σταθερές όσο και στο προσδιοριστικό της printf.
Αριθμός στον οδηγό: Α2.8
(στο κεφάλαιο) ·
Μόνιμο αναγνωριστικό: slides-lec02-overflow ·
Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lec02-overflow.html ·
Markdown (GitHub)