應該i=2494357888 ,但運行結果為“-1800609378”
用 int 或者long long 都不行。
#include <stdio.h>
#include <stdlib.h>
int main()
{
long i;
long k1,k2,k3,k4,k5,k6,k7,k8;
for(k1=1;k1<=22;k1++)
{
for(k2=2;k2<=23;k2++)
{
for(k3=3;k3<=24;k3++)
{
for(k4=4;k4<=25;k4++)
{
for(k5=5;k5<=26;k5++)
{
for(k6=6;k6<=27;k6++)
{
for(k7=7;k7<=28;k7++)
{
i++;
}
}
}
}
}
}
}
printf("i:%d\n",i);
return 0;
}
uj5u.com熱心網友回復:
同學,你的 i 沒有初始化,而且你應該用 long long int,范圍:
unsigned int 0~4294967295
int -2147483648~2147483647
unsigned long 0~4294967295
long -2147483648~2147483647
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:1844674407370955161
__int64的最大值:9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615
修改后的代碼:
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int main()
{
long long int i=0;
long long int k1,k2,k3,k4,k5,k6,k7,k8;
for(k1=1; k1<=22; k1++)//回圈22
{
for(k2=2; k2<=23; k2++)
{
for(k3=3; k3<=24; k3++)
{
for(k4=4; k4<=25; k4++)
{
for(k5=5; k5<=26; k5++)
{
for(k6=6; k6<=27; k6++)
{
for(k7=7; k7<=28; k7++)
{
i++;
}
}
}
}
}
}
}
printf("i:%lld\n",i);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/58979.html
標籤:基礎類
上一篇:幫忙看一下哪里錯了?
