C语言编程问题:求 1!+2!+3!+...+n!
int和long分配的内存空间长度不一样,表示的数值范围不一样。比如可能int有32位的空间,long有64位的空间。n=17超出了整数的表示范围。
这跟编译器的实现方式有关,还与机器的位数有关。比如一个机器用8位表示整型,表示的范围是-128~127(-2^7 ~2^7 -1)。
同理可以计算32位整型的情况。如果超出了这个范围比如128,有的编译器处理的方式就是 -128.类似于一个环,129存储成 -127,long也是这个规律。但是c语言只保证long不小于int,32位机器上long也是32位的跟整型是一样的。
扩展资料:
C语言包含的各种控制语句仅有9种,关键字也只有32个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。
C程序中函数的数目实际上是不限的,如果说有什么限制的话,那就是,一个C程序中必须至少有一个函数,而且其中必须有一个并且仅有一个以main为名的函数,这个函数称为主函数,整个程序从这个主函数开始执行。
参考资料来源:百度百科-c语言