[問題] 處理溢位問題?

看板C_and_CPP (C/C++)作者 (是女的都好)時間16年前 (2010/04/12 20:10), 編輯推噓1(107)
留言8則, 4人參與, 最新討論串1/3 (看更多)
用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<<"溢位囉!" -- 參照版上高手的解答,改成這樣,至少可以顯示已溢位(正整數計算) int a,b,c,d=1,temp=0; cin >> a >> b; c=a; do { c=c+a; if (temp>c) { cout<<"溢位囉!\n下面算出來的答案不正確喔!\n"; break; } d++; temp=c; } while(d!=b); cout<<"積="<<c; 請問,有break和沒有break算出來的答案會不一樣 是什麼原因? 在這裡的break是中斷if還是do? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.220.33

04/12 20:18, , 1F
不用double宣告嗎?
04/12 20:18, 1F

04/12 20:18, , 2F
往前搜尋「溢位」就有了呀
04/12 20:18, 2F

04/12 20:24, , 3F
找過了..可是看不懂... 想說有沒有比較容易理解的方式
04/12 20:24, 3F
※ 編輯: xup6xu6 來自: 140.123.220.33 (04/12 20:42) ※ 編輯: xup6xu6 來自: 140.123.220.33 (04/12 21:46)

04/12 21:54, , 4F
break是中斷什麼你應該查基礎書或相關語法就知道了:)
04/12 21:54, 4F

04/12 22:00, , 5F
我只知道通常用在循環或case裡面,不過這裡放在if的括號中
04/12 22:00, 5F

04/12 22:01, , 6F
也是可以用來中斷do循環?
04/12 22:01, 6F

04/12 22:03, , 7F
因此有break就是遇到溢位就馬上停止,
04/12 22:03, 7F

04/12 22:03, , 8F
沒有break則是繼續做到符合while,是這樣子嗎?
04/12 22:03, 8F
文章代碼(AID): #1BmmsSau (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BmmsSau (C_and_CPP)