- 451 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 18:00:03 ]
- 宿題の答えとしては条件に合わない方法
unsinged long c = a + b; if(c < a) { puts("Overflow"); } else { puts("(a+b) OK"); } ∵) オーバーフローしたとすると、 c = a + b - m (m = 0x100000000) c >= a だと仮定すると b >= m となるが、b < m なので矛盾する。 従って、オーバーフローした場合は必ず c < a となる。 逆に、オーバーフローしていない場合に 必ず c >= a になるのは自明。 ∴ c < a ならばオーバーフローしている。
|

|