Переполнение со знаком целого числа является неопределенным поведением, поэтому вы не можете проверить, произошло ли это, потому что у вас нет никаких гарантий относительно того, что произошло. Вместо этого вы можете сравнить свой номер с INT_MAX
из limits.h
, и если он будет меньше, чем в 10 раз, он переполнится, если вы умножите его на 10.
Но было бы гораздо разумнее не использовать здесь целые числа, а просто напечатать свой номер 1111...
следующим образом:
for (int i = 0; i < n; i++) {
printf("1");
}
Будет напечатано 111
, если n
равно 3
.
Вы можете использовать это так:
int main()
{
int n = 5; // results in "1 + 11 + 111 + 1111 + 11111"
for (int i = 1; i < n+1; i++) {
for (int j = 0; j < i; j++) {
printf("1"); // or putchar('1');
}
if (i < n) {
printf(" + ");
}
else
printf("\n"); // or puts("");
}
return 0;
}