C言語なら俺に聞け(入門篇) Part 34 at TECH
[2ch|▼Menu]
465:デフォルトの名無しさん
08/08/20 01:37:58
>>461 の修正版
int add(int a, int b, int *p_is_overflow){
int chk_type, result, is_overflow=0;

chk_type=(a<0)*2+(b<0);
result=a+b;
switch(chk_type){
case 0: if(result<0) is_overflow=1; break; // a, b ともに 0 以上なので解も 0 以上になるべき
case 3: if(result>=0) is_overflow=1; break; // a, b ともに 0 未満なので解も 0 未満になるべき
}
if(p_is_overflow) *p_is_overflow=is_overflow;

return result;
}

掛け算は a*b/b==a をチェックすればいい

整数同士の除算は一つの例外を除いてオーバーフローしない (0div はあるけど)


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5505日前に更新/113 KB
担当:undef