我的鬼神大人韩剧tv:C语言 有关int和long的问题

来源:百度文库 编辑:高校问答 时间:2024/05/01 17:16:44
以下是一个求回文数的程序
如果i被定义为int型会漏掉部分结果。我不明白的是,即使定义为int,并没有发现任何地方超出范围啊,怎么会出现这种状况呢?

#include<stdio.h>
#define N 256
main()
{
int j,f,t;
long i,k;
int a[20];
for(i=1;i<256;i++)
{
k=i*i;
t=0;
while(k!=0)
{
a[t++]=k%10;
k=k/10;
}
t--;
f=1;
for(j=0;j<t;j++,t--)
if(a[j]!=a[t]) {f=0;break;}
if(f) printf("%d\n",i);
}
}
我试过k为long而i为int的情况,是会少的,所以我才觉得很诧异~请高手指点一下~谢谢~~
谢谢大家的回答~~

应该是k的问题:
i*i最大可能为255×255=65025
而你的k定义为整型的话最大只有32767<65025

我在VC上运行了一下,没有少啊?