GUZAI3ノートブック

友人であるGUZAI3様の依頼で備忘録を書いています。

C/C++で符号付き整数を-1で除算すると未定義動作になることがある

ゼロ除算には気をつけているが、そうでない除算も未定義動作になるケースがあることに気付かされた。

例えば16ビット符号付き整数型の最小値 -32768 を -1 で除算すると、オーバーフローしてしまう。
普通に算数をすると 32768 になるのだが、最大値は 32767 なので、これはオーバーフローになる。
符号付き整数のオーバーフローは未定義だ。



参考にしました。
rsk0315.hatenablog.com