Re: [問題] 處理溢位問題?

看板C_and_CPP (C/C++)作者 (Dannvix)時間16年前 (2010/04/12 21:14), 編輯推噓6(607)
留言13則, 5人參與, 最新討論串2/3 (看更多)
參考看看,應該不難理解 #include <iostream> #include <limits.h> /* INT_MAX */ using namespace std; int main (void) { int a, b, c, d = 1; cin >> a >> b; c = a; do { if ((INT_MAX - a) < c) { cout << "overflow!" << endl; exit(1); /* terminate */ } c = c + a; d++; } while (d != b); cout << a << " * " << b << " = " << c << endl; return 0; } ※ 引述《xup6xu6 (是女的都好)》之銘言: : 用int宣告變數寫乘法運算,要怎麼處理溢位問題 : int a,b,c,d=1; : cin >> a >> b; : c=a; : do { : c=c+a; : d++; : } : while(d!=b); : cout<<"a和b的積="<<c; : 請問要怎麼改才能讓程式判斷當加到溢位時,cout<<"溢位囉!" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.0.106 ※ 編輯: Dannvix 來自: 61.229.0.106 (04/12 21:21)

04/12 21:28, , 1F
感謝,但我還沒學到那麼多程式庫,實在很難應用==
04/12 21:28, 1F

04/12 21:29, , 2F
不過我有爬文找到比較簡易的解決方法,等等補上
04/12 21:29, 2F

04/12 21:32, , 3F
D大的例子裡沒有用到什麼特別的程式庫啊??
04/12 21:32, 3F

04/12 21:32, , 4F
不過小弟我好奇, 加數如果是負的是不是同樣有效XD
04/12 21:32, 4F

04/12 21:33, , 5F
應該就爛掉了,所以這個方法實在頗為簡陋 :(
04/12 21:33, 5F

04/12 21:47, , 6F
因為還沒學過<limits.h>,所以根本不曉得要怎麼用
04/12 21:47, 6F

04/12 21:51, , 7F
所以直接寫asm code check flag好了XD
04/12 21:51, 7F

04/12 21:51, , 8F
http://0rz.tw/oc9md 我想limits.h應該沒有你想像中的
04/12 21:51, 8F

04/12 21:52, , 9F
難, 尤其當你打開它看過以後XDDD
04/12 21:52, 9F

04/12 22:27, , 10F
要看是那個 limits.h 有的 include 盤根錯節 XD
04/12 22:27, 10F

04/12 22:34, , 11F
這樣說也是XD 還有一海票的ifdef/endif....Orz
04/12 22:34, 11F

04/12 23:21, , 12F
是說用 C/C++ 的話應該沒有辦法直接 access 到 flag?
04/12 23:21, 12F

04/13 18:16, , 13F
幹嘛不用 <limits> 的 numeric_limits<T>::max() ?
04/13 18:16, 13F
文章代碼(AID): #1Bmnoi20 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #1Bmnoi20 (C_and_CPP)