[C言語]整数のオーバーフロー

– 大きな数値同士の掛け算ではオーバーフローしやすい
– 表現可能なのは2147483647まで
– 最大値に1を足した場合もオーバーフローになる

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <limits.h>
 
int main(void){
    int a = INT_MIN; // -2147483648
    int b = -1;
 
    int answer = a * b;
    printf("%d\n", answer);
 
    return 0;
}

$ ./main
-2147483648

int answer = a / b;としても同様
$ ./main
Floating point exception (core dumped)