关于强制转换的问题

xxjnetwork 2013-01-19 06:04:59

typedef long long int64;
int64 i;
double d = 2.355

请问i = *(int64 *)&d与 i =(int64)d的区别
如果你觉得没区别,如果你仅仅在自己机器测试了下结果而没有考虑跨平台的问题,那请无视我的问题。
希望大神们回答明白,非常感激。
...全文
197 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2013-01-19
  • 打赏
  • 举报
回复
i = *(int64 *)&d 取存储数值 d 的地址, 按 int64 的数据类型去解释 d 的地址指向的数据(内存中的 01 序列)
ForestDB 2013-01-19
  • 打赏
  • 举报
回复
换个说法: i = *(int64 *)&d; 将d(double类型)的内容用int64去解释,赋给i。 i = (int64)d; 截尾。
mymtom 2013-01-19
  • 打赏
  • 举报
回复
i = *(int64 *)&d; /* 按内容型赋值, 相当于memcpy(&i, &d, sizeof(i)) */ i =(int64)d; /* 按数值赋值值 */

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧