C++求1!+2!+3!+...+20!的值

在这个跟问题里涉及到的最大的问题就是数值范围问题,那么在C++整型数据的范围是多少呢?
详情参见下表:

类型名称及所占字节数 值的范围
int(4) -2,147,483,648 到 2,147,483,647
unsigned int(4) 0 到 4,294,967,295
unsigned short int(2) 0 到 65,535
long int(4) -2,147,483,648 到 2,147,483,647
unsigned long int(4) 0 到 4,294,967,295
long long(8) -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long long(8) 0 到 18,446,744,073,709,551,615

涉及到20!,我们就可以用long long型的进行定义变量,代码如下:

#include 
using namespace std;

int main()
{
	int   n;
	unsigned long long m = 1;
	unsigned long long z = 0;
	for (n = 1; n <= 20; n++)
	{
		m *= n;
		z += m;
	}
	cout << "1!+2!+3!+...+20!=" << z << endl;
	return 0;
}

程序运行结果为:
C++求1!+2!+3!+...+20!的值_第1张图片
更详细的数据类型范围:https://docs.microsoft.com/zh-cn/cpp/cpp/data-type-ranges?view=vs-2019

你可能感兴趣的:(C++)