注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

融智技术学院

融智技术学院163分站,为广大好友提供更多的帮助

 
 
 

日志

 
 

【C语言每日一问】保存双精度数据到无符号整型  

2014-03-21 16:28:43|  分类: C语言 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
问题:看程序中的这些行:
  • if (ftPtr) {
  •     *ftPtr = feet;
  • }

注意feet包含double值作为modf()函数的结果。另一方面ftPtr是一个unsigned int变量地址。

问题是现在这个程序运行的很好没有任何警告,但它在我嘴里留下了坏的味道,double类型值被赋予到int变量中。有用C语言赋予double值到int变量使用合适的地址方式?

  • #include <stdio.h>
  • #include <math.h>
  •  
  • void metersToFeetAndInches(double meters, unsigned int *ftPtr, double *inPtr) {
  •     double feet;
  •     double inches;
  •  
  •     double rawFeet = meters * 3.281;
  •  
  •     inches = modf(rawFeet, &feet);
  •  
  •     if (ftPtr) {
  •         *ftPtr = feet;
  •     }
  •  
  •     if (inPtr) {
  •         *inPtr = inches;
  •     }
  • }
  •  
  • int main(int argc, const char * argv[])
  • {
  •     double meters = 1.80;
  •     unsigned int feet;
  •     double inches;
  •  
  •     metersToFeetAndInches(meters, &feet, &inches);
  •     printf("%.2f meters is %d feet and %.2f", meters, feet, inches);
  •     return 0;
  • }

 

回答:是的,这很好。

double将首先被转换为一个unsigned int,然后它将被保存,它就好像是你这样写:

  • if (ftPtr) {
  •     *ftPtr = (unsigned int)feet;
  • }
  评论这张
 
阅读(11)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017