符号無し整数の算術演算がオーバフローを起こさないことを確認するプログラム
#include <stdio.h> #include <limits.h> int main(void) { unsigned x = UINT_MAX - 1; printf("unsigned型の最大値:%u\n", UINT_MAX); printf("x = %u\n", x); printf("x + 3 = %u\n", x + 3); printf("x * 2 = %u\n", x * 2); return (0); }
実行結果
unsigned型の最大値:4294967295 x = 4294967294 x + 3 = 1 x * 2 = 4294967292