作者opq77114 (歐匹哭)
看板C_and_CPP
標題[問題] C 數字overflow的問題
時間Fri Dec 18 09:41:09 2009
目前正在做一個2進位轉成10進位數字的function
其中有用到pow(2,次方)這個function
但是當次方=31時跑出來的結果是-2147483648
請問該怎麼做才能避免overflow
我最多也只用到31次方而已......
拜託高手幫我解答一下
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.49.100
1F:推 ledia:unsigned int ? 12/18 09:43
2F:推 VictorTom:樓上正姐 (羞XD) 12/18 09:55
3F:推 oddguy:不如unsigned long 12/18 11:03
4F:推 ledia:敢問樓上, 不如在哪? XD 12/18 11:46
5F:推 VictorTom:大概是argu 16 bits環境的時候吧@_@" 12/18 11:51
6F:→ VictorTom:其實我也直接記不清楚C/C++/Java在16/32/64 bit環境時, 12/18 11:52
7F:→ VictorTom:非float/double型態時的byte count大小....XD 12/18 11:52
8F:→ VictorTom:"我也一直記不清楚" 為什麼會typo成直接勒, 看到鬼Orz 12/18 11:53
9F:推 zerodevil:用uintXX_t超穩 都不用記XD 12/18 11:56
10F:推 oddguy:用unsigned long的好處是:如果以後需求超過31次方…… 12/18 13:11
11F:推 ledia:需求超過31次方, unsigned long 又還是 32 bit 時一樣掛呀 12/18 13:39
12F:→ ledia:是我我會推 uintXX_t ... XD 12/18 13:39
13F:推 littleshan:unsigned long 完全不好...跨平台會很麻煩 12/18 15:05
14F:→ MOONRAKER:以後需求超過2^31的時候程式也該改寫了 12/18 20:34
15F:→ MOONRAKER:不重要就算了,重要的程式還不想改寫,出問題也沒啥奇怪 12/18 20:35