線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1295
推到 Plurk!
推到 Facebook!

在linux下編寫c語言會overflow

尚未結案
kochen
一般會員


發表:8
回覆:5
積分:2
註冊:2004-09-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-05 23:06:34 IP:211.76.xxx.xxx 未訂閱
各位好 我在攥寫程式時 要將16進位轉成10進位 可是單讀算出來都不會有OVERFLOW的問題 可是只要一加起來就爆了... 我宣告成DOUBLE 可是還是會爆 該怎辦呢 我連LONG INT都做了也一樣 0x80 0x80 0x96 0xE2 像這一串是一個16進位數字 我將每一個都先強製轉成10進位後去計算 就掛了 能否指點我一下...謝謝
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-06 02:48:09 IP:211.76.xxx.xxx 未訂閱
kochen你好: 能否請你post出會出問題的程式碼?轉base的方法有很多,可能需要知道你用的方法是什麼。
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-12 21:23:17 IP:211.76.xxx.xxx 未訂閱
會不會 overflow 與 10 進位、16進位應該沒有關係。 資料存在電腦或在電腦內計算,都是用 2 進位, 10 進位是在最後給人看的時候才需要轉換, 16 進位只是讓程式設計師比較容易看懂 2 進位, 如此而已。以宣告兩個    int abc,xyz;    的變數,這個 abc 與 xyz 就是整數,沒有 10 進位、16進位的問題,它存在電腦內就是 2 進位。    abc=100;    那 abc 就是記錄 100 (10進制)這個數值,以 16 進制就是 64,而存在電腦內就是 2 進制 1100100    xyz=0x100;    那 xyz 就是記錄 0x100 這個數值,當然 0x100 以 16 進制來看就是 100, 如果以 10 進制來看就是 256,但是它存在電腦內就是 2 進制的 100000000    abc=abc+xyz;    這個計算,在電腦內作的就是2進制的 1100100 + 100000000 = 101100100    所以 abc 會變成 2 進制的 101100100 也就是 10 進制的 356 也會是 16 進制的 164    給人看的轉換 printf("abc(10 進制)=%d\n",abc); printf("abc(16 進制)=%X\n",abc); 至於 2 進制... 說真的 101100100 要看也實在是不容易  回到主題: href="http://free.greenworld.com.tw/~dllee/" target="blank">吃軟也吃硬 dllee.ktop.com.tw StatPlus 系統資源監測器 @ KTOP VMASK - ViewMove Automation Software Kernel
------
http://www.ViewMove.com
系統時間:2024-05-19 0:32:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!