看板 C_and_CPP 關於我們 聯絡資訊
參考看看,應該不難理解 #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)
xup6xu6:感謝,但我還沒學到那麼多程式庫,實在很難應用== 04/12 21:28
xup6xu6:不過我有爬文找到比較簡易的解決方法,等等補上 04/12 21:29
VictorTom:D大的例子裡沒有用到什麼特別的程式庫啊?? 04/12 21:32
VictorTom:不過小弟我好奇, 加數如果是負的是不是同樣有效XD 04/12 21:32
Dannvix:應該就爛掉了,所以這個方法實在頗為簡陋 :( 04/12 21:33
xup6xu6:因為還沒學過<limits.h>,所以根本不曉得要怎麼用 04/12 21:47
VictorTom:所以直接寫asm code check flag好了XD 04/12 21:51
VictorTom:http://0rz.tw/oc9md 我想limits.h應該沒有你想像中的 04/12 21:51
VictorTom:難, 尤其當你打開它看過以後XDDD 04/12 21:52
ledia:要看是那個 limits.h 有的 include 盤根錯節 XD 04/12 22:27
VictorTom:這樣說也是XD 還有一海票的ifdef/endif....Orz 04/12 22:34
Dannvix:是說用 C/C++ 的話應該沒有辦法直接 access 到 flag? 04/12 23:21
tinlans:幹嘛不用 <limits> 的 numeric_limits<T>::max() ? 04/13 18:16