OVERFLOW
не будет напечатано в вашем случае.То, что происходит в вашем случае, таково: когда ваш I
уже на максимуме, и если вы продолжите увеличивать его с помощью ++I
, он будет округлен до самого низкого значения.Иллюстрация:
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
void f(int I) {
++I;
printf("\nAfter incrementing I: %d\n", I);
if (I > INT_MAX) {
printf("OVERFLOW\n");
} else {
printf("NO OVERFLOW\n");
}
}
int main(void) {
f(INT_MAX);
printf("DONE\n");
}
Вывод:
After incrementing I: -2147483648
NO OVERFLOW
DONE