首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

问一个TC输出的有关问题

2012-03-28 
问一个TC输出的问题#includestdio.hvoid main(){long int a,b,c1,c2,c3,c4,c5printf(please input an

问一个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吧,我觉得没必要这么做!
呵呵,个人意见.佩服楼主的钻研精神,学习!!^_^

热点排行