再次请教c语言高手,为啥我输入n:20的时候 输出的是-2102132736

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了再次请教c语言高手,为啥我输入n:20的时候 输出的是-2102132736相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
void main()
int i,n,s=1;
printf("Please enter n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
s=s*i;
printf("%d! = %d\n",n,s);

参考技术A 原因很简单 溢出了呗 20的阶层很大 int最多是4个字节 也就是30000多,你换成double 试试 参考技术B 阶乘么?20的阶乘这个数很大了 已经超出了int型的范围了 这种程序只能解决小数字的阶乘 你要大数字阶乘 。。用数组来储存吧 参考技术C 数太大了,基本数据类型都存不了,溢出了
20!值拿windows的计算器算了下
2432902008176640000
参考技术D Please enter n:20
20! = 1
20! = 2
20! = 6
20! = 24
20! = 120
20! = 720
20! = 5040
20! = 40320
20! = 362880
20! = 3628800
20! = 39916800
20! = 479001600
20! = 1932053504
20! = 1278945280
20! = 2004310016
20! = 2004189184
20! = -288522240
20! = -898433024
20! = 109641728
20! = -2102132736
Press any key to continue

在win32系统下 int 超过2开头10位就溢出了本回答被提问者采纳

为啥我的c++命令行里只能输入中文不能输入英文,对于数字只能输出十六进制的,请高手帮帮忙,谢谢!!!

这个是用着用着忽然有一天就变这样了。shift健怎么按也没用,我重装了一次还那样。实在郁闷……

是输入法的问题吧,你用的什么输入法呢?用微软拼音试试!
用Ctrl+空格,或者Alt+Shift试试;光Shift不行。
如果还不行,也不要怀疑VC有问题了,估计系统重装才能解决。
参考技术A 你切换一下输入法啊,shift没用试试ctrl+空格 参考技术B 你重装的是什么啊

以上是关于再次请教c语言高手,为啥我输入n:20的时候 输出的是-2102132736的主要内容,如果未能解决你的问题,请参考以下文章

C语言将字符串转换为数字出错,请教高手

新手请教:我自创建了c语言头文件,可是为啥运行时自己的头文件不能包含进去。请高手为我解答。谢了!

verilog 中啥语句并行运行啥时候顺序运行!搞不懂 请教高手!

c语言如果用字符串类型输出字符数组,字符数组最后一个是0,那么为啥会出现乱码

初学C语言,请教高手字符串拼接的问题。要求是将a与b拼接到c,a占前20位,b从第20位开始。我的代码如下:

C语言,求高手分析双精度的输入,为啥定义一个双精度,输入函数中少了一个l,只用%f,可以执行,结果错误