#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,结果都正确逆转,看来这个使用的编译器类型有关系,不同类型编译器自带的算法在某些情况下可能有问题!