C语言数据类型那点事

来源:互联网 发布:淘宝图片轮播怎么做 编辑:程序博客网 时间:2024/06/05 06:02

错误的实例:

其中输入的数字不超过20

#include <stdio.h>
int main()
{
int n1=0;
int n2=0;
int m=0;
int n=1;
    int a,b,i;
scanf("%d",&a);
for(i=1;i<=a;i++)
{
n=n*i;
m=m+n;
}


    printf("%d",m);//此处有问题
    return 0;
}


long long是64bit存储的,而int只有32bit

正确的:

#include<stdio.h>  
int main()
{
    int n, i;
    long long m = 1, s = 0;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        m *= i;
        s += m;
    }
    printf("%lld", s);
    return 0;
}


这题可能一直答案错误,然后找不出来。很多程序可能都是对的,也可以运行。但这边主要考验一个输出格式的点。

%d 有符号32位整数

%lld 有符号64位整数

%llx有符号64位16进制整数

%u 无符号32位整数