オーバーフロー談義

翌日のINF談義も微妙にオーバーフロー談義と被っていたため、収録しました。 無限大談義(参考): togetter.com/li/728673 続きを読む
1
マヨ子@秋篠宮popstar @mayoko_

あ, そういえば C++ でオーバーフローを検知するみたいの出来るんですか(今日の C はずっとそれを疑ってたけど結局そうではなかった)

2016-01-24 08:02:09
koyumeishi @koyumeishi_

@mayoko_ 自分は使ったことないですが、GCC5 の __builtin_add_overflow 等で検出できるっぽいです。 cpplover.blogspot.jp/2015/04/gcc-5.…

2016-01-24 08:26:36
koyumeishi @koyumeishi_

以前この記事読んで、デバッグ用にこの辺の処理を勝手にほげってくれる整数class作ろうと思ったことがある。 思っただけ。

2016-01-24 08:28:11
koyumeishi @koyumeishi_

自分のwindowsでGCC5系がまともに動かないのでそもそもダメなんだけど

2016-01-24 08:29:36
マヨ子@秋篠宮popstar @mayoko_

@koyumeishi_ うーん, ちょっとめんどいですね… 冷静に MOD 用整数クラス作ったほうが良い気がしてきた

2016-01-24 08:31:57
IDE抜きでコーディングする方法を忘れた @konjo_p

加算と減算なら符号ビット見ればオーバーフローは見地できるってパタヘネに書いてあった。

2016-01-24 08:43:38
koyumeishi @koyumeishi_

@mayoko_ ですねー。 これを使おうと思ったらデバッグ用整数クラス作って―って感じですかね #ifdef DEBUG using integer = int_debug; #else using integer = int; #endif

2016-01-24 08:44:27
マヨ子@秋篠宮popstar @mayoko_

@koyumeishi_ あーそうか operator 定義すれば大したことないですね ありがとうございます

2016-01-24 08:47:58
マヨ子@秋篠宮popstar @mayoko_

@konjo_p 大体疑うのは掛け算なんですよね…

2016-01-24 08:48:35
koyumeishi @koyumeishi_

先日のこどふぉdiv2 Aで乗算なのに符号を見てやっててオーバーフロー検出できず落とした思い出

2016-01-24 08:49:20
マヨ子@秋篠宮popstar @mayoko_

clang++ -fsanitize=signed-integer-overflow a.cpp とかやると clang では出来るのかな

2016-01-24 08:49:28
koyumeishi @koyumeishi_

ftrapv ってオプションあるのか

2016-01-24 08:58:30
IDE抜きでコーディングする方法を忘れた @konjo_p

@mayoko_ 本当に自作クラスぐらいしか無いものですかね... ( そのぐらいしか無さそうな気もしますが...

2016-01-24 09:02:23
IDE抜きでコーディングする方法を忘れた @konjo_p

大抵のハードウェアではオーバーフロー検知してどうこうする作りにはなってるはずだけど、それをC++が使わせてくれるかどうかは別問題か。

2016-01-24 09:04:04
マヨ子@秋篠宮popstar @mayoko_

@konjo_p とりあえずクラス作ってみます・・

2016-01-24 09:05:45
koyumeishi @koyumeishi_

おー、-ftrapv 使ったらちゃんとオーバーフロー検出してくれた

2016-01-24 09:08:19
マヨ子@秋篠宮popstar @mayoko_

@koyumeishi_ unsigned だけだと思ったんですが long long でも検出してくれますか?

2016-01-24 09:11:13
IDE抜きでコーディングする方法を忘れた @konjo_p

-ftrapv 使ったらオーバーフロー検出してくれたけど、cinつかってintに入りきれない整数読もうとしても落ちてくれない

2016-01-24 09:11:20
IDE抜きでコーディングする方法を忘れた @konjo_p

-ftrapv使うとオーバーフロー検知して例外発生させるほうの機械語に変換してるんじゃないかという気がする

2016-01-24 09:12:39
マヨ子@秋篠宮popstar @mayoko_

@koyumeishi_ あ, やってみたら出来ましたね すみません

2016-01-24 09:13:57
IDE抜きでコーディングする方法を忘れた @konjo_p

あれ、cinからintに収まらない整数読もうとするとこうなるのっていつもだっけな。

2016-01-24 09:15:30
マヨ子@秋篠宮popstar @mayoko_

ftrapv ってどういう意味なんだろう(そんなこと言ったら -O2 とかもどういう意味かわかってない)

2016-01-24 09:17:04
IDE抜きでコーディングする方法を忘れた @konjo_p

オーバーフロー検知するようにしても速度的にはそんなに変わらないか。

2016-01-24 09:23:15
agw @masashinakata

今日の戦績。FHCに至ってはまぐれ。ここしばらく惨敗が続いていてまずい。今日は皆様に色々教わったので、明日ちゃんと復習しよう…: Codeforces Div 2: ooxx- FCH 2016 R2: x-o-

2016-01-24 10:22:48
agw @masashinakata

まずCodeforcesのC問題を倒した。[-10^14, 10^14]を取る値を無限大として初期化するときに10^9としていたのが原因…こりゃ駄目だ

2016-01-24 10:45:21