发布网友 发布时间:2024-10-23 21:20
共2个回答
热心网友 时间:17小时前
相信你用的是TC20:
1.这个程序中b,c是整型,因为TC20是16位模式,int型存储空间只有2字节,无符号最大才65535,你那个计算出来的值太大,所以就错了,把int b,c;改为long b,c;,printf中改为"%ld"就好了.楼上说的tc30是32位模式,int型是4字节,和原来的long长度一样,所以没问题
2.同上
3.这个也是TC20的BUG,你需要手动连接浮点库,在程序main开始加以下的语句:
float arg,*point=arg;
其中arg,point只要不和其他变量名重合就可以了
-------------------------------------
非要解释清楚的话是这样的:首先大的方面还是我说的那个,具体操作的时候是受自动类型转换的影响,c=a/10000; 这个式子中a/10000的结果是9,就像你说的"在不超出整型的范围内,长整型是可以付值给整型数据的",下面b=(a-c*10000)/1000; 这句中由于c和10000都在整型范围,所以按整型计算,c*10000不等于90000,而是取低位,值为24464,这样(a-24464)/1000就有了74这个结果了.
第二条是同样的原理,90000和98765都被解释为长整型常量,相减就没问题,而9和10000都被解释为整型常量,结果就出问题了
你可以试试改为这样的式子b=(a-c*10000l)/1000;在10000后面加小写的L,表示10000是长整型常量,按自动类型转换结果也成了长整型,b的结果也就对了
热心网友 时间:17小时前
不知道你是用什么软件编的。
反正我用turbo c 3.0编译出的结果都是正确的。
1、结果为8
2、8 8 8
3、完全可以正常输入数据