[問題] C 數字overflow的問題

看板C_and_CPP作者 (歐匹哭)時間16年前 (2009/12/18 09:41), 編輯推噓9(906)
留言15則, 6人參與, 最新討論串1/1
目前正在做一個2進位轉成10進位數字的function 其中有用到pow(2,次方)這個function 但是當次方=31時跑出來的結果是-2147483648 請問該怎麼做才能避免overflow 我最多也只用到31次方而已...... 拜託高手幫我解答一下 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.49.100

12/18 09:43, , 1F
unsigned int ?
12/18 09:43, 1F

12/18 09:55, , 2F
樓上正姐 (羞XD)
12/18 09:55, 2F

12/18 11:03, , 3F
不如unsigned long
12/18 11:03, 3F

12/18 11:46, , 4F
敢問樓上, 不如在哪? XD
12/18 11:46, 4F

12/18 11:51, , 5F
大概是argu 16 bits環境的時候吧@_@"
12/18 11:51, 5F

12/18 11:52, , 6F
其實我也直接記不清楚C/C++/Java在16/32/64 bit環境時,
12/18 11:52, 6F

12/18 11:52, , 7F
非float/double型態時的byte count大小....XD
12/18 11:52, 7F

12/18 11:53, , 8F
"我也一直記不清楚" 為什麼會typo成直接勒, 看到鬼Orz
12/18 11:53, 8F

12/18 11:56, , 9F
用uintXX_t超穩 都不用記XD
12/18 11:56, 9F

12/18 13:11, , 10F
用unsigned long的好處是:如果以後需求超過31次方……
12/18 13:11, 10F

12/18 13:39, , 11F
需求超過31次方, unsigned long 又還是 32 bit 時一樣掛呀
12/18 13:39, 11F

12/18 13:39, , 12F
是我我會推 uintXX_t ... XD
12/18 13:39, 12F

12/18 15:05, , 13F
unsigned long 完全不好...跨平台會很麻煩
12/18 15:05, 13F

12/18 20:34, , 14F
以後需求超過2^31的時候程式也該改寫了
12/18 20:34, 14F

12/18 20:35, , 15F
不重要就算了,重要的程式還不想改寫,出問題也沒啥奇怪
12/18 20:35, 15F
文章代碼(AID): #1BAjst-d (C_and_CPP)