分享

C语言错误集绵

 清华大学闫娜 2012-08-19
C语言里“/”在表示两个数相除时具体处理很有意思:看看这段代码的输出: 
printf("%d\n",5/3); 
printf("%f\n",5/3); 
printf("%f\n",5.0/3); 
printf("%d\n",5.0/3); 
printf("%f\n",5/3.0); 
printf("%d\n",5/3.0); 


(1)1 
(2)839.209961 
(3)1.666667 
(4)-1431655765 
(5)1.666667 
(6)-1431655765 

说明:当两个都是整数是,计算的实际上是整数商,抛弃余数(1); 
当一个是小数时,按照小数计算,结果是小数(3、4、5、6)。此时如果按照整数输出,系统就将浮点数转化为整数,(4、6)出现乖乖的结果; 
有意思的是(2),将5/3的记过按照浮点数输出,结果是839.209961,说明我的机器整数是32位,而浮点数是用double表示的,80位,由于字长不够,系统就取了整数后面的字节作为浮点数的一部分,所以输出成了(2)的样子,这是随机的,和机器有关。 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多