C語言數據類型那點事

錯誤的實例:

其中輸入的數字不超過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位整數


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章