Project Euler をやっていると

int (long) の桁あふれが頻発する.普段の計算では32ビットで十分と思っている.でも,Project Euler では違う.求め方は合っているはずなのに,解答を入力すると "incorrect" と言われる.おかしいなと思って int を long long に直すと解が変わる.新しい解を入力すると,正解である.桁あふれが不正解の原因だったことが分かる.

正直 int の大きさに甘えていた.私の環境では,INT_MAX は 2147483647 である.20億である.桁あふれなんてそうそう無いと思っていた.
思えば,C を学びたての頃は型をきちんと考えていたように思う.unsigned も指定したり,値域を考えて long や long long にしたり.それやいまや,とりあえず int.すべからく int.
ちょっとハッとした.そんな夜.