凭什么出错

z1z2z3z4 2009-03-14 07:48:52
//说明:time_t的定义为:#define __int64 time_t;
time_t t = 12345;
q = *(__int64 *)&t;//由于time_t定义就是__int64,所以转换为__int64
cout<<q;//输出错误

转换一行如果这样写就输出正确:
q = *(time_t *)&t;

VC环境。
...全文
44 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
z1z2z3z4 2009-03-14
  • 打赏
  • 举报
回复
哦,粗心了,果然是typedef long time_t;
arong1234 2009-03-14
  • 打赏
  • 举报
回复
至少我的编译器是这么认为的:typedef long time_t;
所以你假定他是int64本身旧错了
z1z2z3z4 2009-03-14
  • 打赏
  • 举报
回复
另外,time_t虽然定义为__int64,但下面的操作结果不同:

time_t t = 12345;
t <<= 8;
t >>= 8;
cout<<t;//结果不等于12345

time_t t = 12345;
t *= 8;
t /= 8;
cout<<t;//结果不等于12345

如果是__int64则没有问题:
__int64 t = 12345;
t <<= 8;
t >>= 8;
cout<<t;//结果等于12345

time_t和__int64有什么不一样?
野男孩 2009-03-14
  • 打赏
  • 举报
回复
什么叫输出出错??

time_t怎么是__int64?

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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