最新发现:看int如何用于大于32767的数

   由于4月份的二级C考试以上机“优秀”、笔试“不及格”的成绩而未能通过考试,于是前天又开始复习。~~嘿嘿,直到现在才真正理解到了什么叫“读书百遍,其义自现”的道理。今天的收获真是不小,虽然不一定能对考试其到帮助作用,但作为学术研究还是十分有价值的,至少我自己是这样认为的。下面进入正题:    

     

    1. #include <stdio.h>       

    2. void main()       

    3. {       

    4.  double a;       

    5.  int b;       

    6.  a=1.234567890e9;//e9中的9可以改为小于或等于9的数,但不能改为再大于9的数        

    7.  b=(int)(a);       

    8.  printf("%d/n",b); //如果把%d改为%u,还可以把第6行末尾的e9中的9改为更大的数       

    9. }       

    测试环境:visual C++ 6.0   

 

    这程序的题意是把一个double型数据赋给int型数据.其次,请大家看看程序的第7,把变量adouble型强制转换为int.在执行程序的第6行时,a的值已经变成1234567890,是一个完完全全大于32767的数了,并且位数也已经飚升为10.大家都知道,int型变量的值上限是32767,但为程序执行第7行后,其值并没有被改变呢?doubleint是两种完成不同类型的数据,为什么"强制"失效?这叫什么现象?这个问题,值得深究,或者说是值得像我们这种水平的去研究.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值