编程计算组合数m!/(n!*(m-n)!)。为什么Win7 64位运算小的数值时正常,而运行C(100,22)程序停止工作
编程计算组合数m!/(n!*(m-n)!)。为什么Win7 64位运算小的数值时正常,而运行C(100,22)程序停止工作
日期:2018-02-12 09:50:54 人气:1
您这是数据溢出。
long 是long int的缩写,在32位编译系统下,long和int占的空间是相同的,你可以用sizeof(long)查看,我这边是4个字节,可以表示的整型数字范围为-2,147,483,648 ~ 2,147,483,647。
22的阶乘计算器算得1124000727777607680000,明显超出。就算是long long型64位长度也不够你这样用的。
通常超长数字,要考虑用字符串保存。你可以考虑,自己写个函数,参数是两个字符串,分别表示两个乘数,结果返回字符串存储的乘积