C语言回文数的判断问题

回文数:#include
void main()
{
int x=1, y,t;
printf("input n: "); scanf("%d", &x ); //输入数据
y=0;
t=x; //保存下原数
do {
y=y*10+t%10;
t/=10;
} while(t); //原数逆序
if ( y==x )
printf("yes!\n");
else
printf("no!\n");
}
超过11位数字就会出错?为什么?eg:12345678987654321
即使是改类型也会出错呢!

推荐使用字符串翻转模式来实现。。。这样就不受位数限制了!!

int类型占4个字节,也就是32位二进制数,最高位是符号位,0表示正数,1表示负数,所以int能够表示的数的范围是-2的31次方到2的31次方-1。超过这个范围内存就会溢出,会出错

换成字符串或者字符数组呢?