gps静态测量怎么换站:c程序long转int输出问题求解

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 05:04:49
#include <stdio.h>
void main()
{
long int m,n;
scanf("%ld,%ld",&m,&n);
printf("m=%d,n=%d\n",m,n);

}
输入:50000,-60000
vc6.0:m=50000,n=-60000

正解应该是:m=-15535,n=5536
用tc2.0/3.0:m=-15535,n=0
为什么,第2个数字出问题
我把-60000赋给第一个变量,相应的值就没错;不过第2个老是0。。。。。这是怎么回事?在这拜谢!!
代码,本身没问题。。。
我用按步动态分析过。。。m,n最后的值没有问题
问题在printf里,第一个值总是对的,第2个不是0就是-1;如果是long不能用%d输出,那第一个也应该是错的,既然第一个可以输出。。。
那为什么第2个不行呢?希望有人可以给个比较专业的解释,不要说是编译器的问题。。。

long m, n;
---------------------------------
实在不能理解你在测试什么或者寻找什么?
你不会打算用printf来做强制转换吧,%d<--m发生了错误,所以影响了下个%d的转换(我分析的),你可以这样去测试
printf("%d,%d,%d,%d",m,1,n,1)可以看出来了吧,我不清楚TC是否有编译指令来控制错误也继续执行下去.
我认为还是这么写printf("%d,%d",(int)m,(int)n)这样才对啊,先强制转换再做打印.
VC,delphi,C++Builder中的int(integer)为signed 32-bit相当于TC的long所以输出50000 -60000没啥问题.
而且正确输出应该是 -15536 -5536吧!

那就用长整型输出呗,应该是long int那里的问题。
用高位记录数值,所以低位全零呀。

好象也不是……楼上比较专业呀~~