作者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