读书人

问一个TC输出的有关问题

发布时间: 2012-03-28 15:40:03 作者: rapoo

问一个TC输出的问题
#include"stdio.h"
void main()
{
long int a,b,c1,c2,c3,c4,c5;
printf("please input an integer less than 100000:");
scanf("%ld",&a);

c5=a/10000;
a=a-c5*10000;
c4=a/1000;
a=a-c4*1000;
c3=a/100;
a=a-c3*100;
c2=a/10;
a=a-c2*10;
c1=a/1;
printf(" %d,%d\n",c1,c2);
b=c1*10000+c2*1000+c3*100+c4*10+c5*1;

printf("%ld\n",b);
}

这个程序的作用是把一个5位数逆序输出,但是有一个问题
比如我输入了98765
printf(" %d,%d\n",c1,c2);这个语句在TC2.0下的对应的输出却是5,0
但是在VC++6.0下却没有这个问题
想请教下怎么回事?


[解决办法]
是不是位数的问题,tc支持16位的dos程序,win32是支持32位的。可能溢出了,你打印以下看看从哪里开始不一样的
[解决办法]
printf(" %d,%d\n",c1,c2);
改成
printf(" %ld,%ld\n",c1,c2);
[解决办法]
tc下int好像是2个字节吧 那最大是不是应该是65535 你换个比这个小的试下 如果可以 那就把类型改为long int
[解决办法]
这个不是很明白,我现在只用VC++6.0,不用TC
我觉得楼主似乎有点钻牛角尖,程序正确后,不是应该完善使它效率更高吗?
为什么要让它在不同的编译器里都能实现呢?现在大多用的都是VC++6.0吧,我觉得没必要这么做!
呵呵,个人意见.佩服楼主的钻研精神,学习!!^_^

读书人网 >C语言

热点推荐