关于逆转
#include "stdio.h"
void main()
{
int a,b;
scanf("%d",&a);
while(a)
{
b=a%10;
printf("%d",b);
a=a/10;
}
printf("\n");
}
用这个程序来进行数的逆转输出,为什么当数字的数目多于5个或者数字比较大的时候,运行后结果会不对呢?
#include "stdio.h"
void main()
{
int a,b;
scanf("%d",&a);
while(a)
{
b=a%10;
printf("%d",b);
a=a/10;
}
printf("\n");
}
用这个程序来进行数的逆转输出,为什么当数字的数目多于5个或者数字比较大的时候,运行后结果会不对呢?
对的,一旦超过int的表示范围,这就是一个未定义的行为了
我又把程序改为:
void main()
{
long a,b;
scanf("%d",&a);
while(a)
{
b=a%10;
printf("%d",b);
a=a/10;
}
printf("\n");
getch();
}
然后在DeV-C++下编译运行后,输入123456和1234567,结果都正确逆转,看来这个使用的编译器类型有关系,
不同类型编译器自带的算法在某些情况下可能有问题!