C言語なら俺に聞け! Part 100
レス数が950を超えています。1000を超えると書き込みができなくなります。
0960デフォルトの名無しさん
05/01/30 23:49:02計算前の値を保存して毎回チェックするしかないんでしょうか?
result = a + b + c;
だと桁あふれする可能性があるので
unsigned int RobustPlus(unsigned int a, unsigned int b) {
unsigned int tmp;
tmp = a;
a += b;
if (tmp < a) {
return UINT_MAX;
}
return a;
}
result = RobustPlus(RobustPlus(a, b), c);
if (result == UINT_MAX) { error(); }
としてみたものの、どうも格好悪くて釈然としません。
レス数が950を超えています。1000を超えると書き込みができなくなります。