tak0kadaの何でもノート

発声練習、生存確認用。

医学関連は 医学ノート

整数のオーバーフロー対策

project euler 66を解いていて力任せなコードでunsigned long型のxについてx2を計算したらオーバーフローしてしまった。

オーバーフロー検出としては以前利用したlimits.hをインクルードして、

#include<limits.h>
if (x > ULONG_MAX / x)
  return 1;

とするか、gccなら-ftrapvオプションを利用する。exit codeについてはhttp://tldp.org/LDP/abs/html/exitcodes.htmlを見る。