static_cast(double)在xp上和win7

whslovexyp 2012-03-28 10:27:04
xp:32位,用的c++6.0
win7:32位,用的c++9.0

double d = -4295016848.0;
int i = static_cast<int>(d)
xp:-49552;
win7:-2147483648
win7上的值是int的最小值,why?
even d = -2147483649.0
win7:INT_MIN
哪位知道原因吗,分多的是
...全文
141 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mosal 2012-03-28
  • 打赏
  • 举报
回复
对于多出的位,补充是有区别的 比如 char a = -1; unsinged int b = (unsigned int) a;此时多出来的那32-8位会补1 而不是零,但如果是char a = 1 就会补0[Quote=引用 6 楼 的回复:]

结贴结贴,没人50
[/Quote]
whslovexyp 2012-03-28
  • 打赏
  • 举报
回复
结贴结贴,没人50
whslovexyp 2012-03-28
  • 打赏
  • 举报
回复
是不是说unsigned int的编译器有定义,方法就是取模,对于signed的转化,编译器是没有定义的。。。
mosal 2012-03-28
  • 打赏
  • 举报
回复
太拽了 穷人只求接分 我想说我如果出9.0不会说跟6.0区别 最多也只说8.0呃
既然标准都说未定义了 我想怎么取就怎么取了 写代码的人都不为程序负责 我还要负什么责
whslovexyp 2012-03-28
  • 打赏
  • 举报
回复
我想说的是有没有文档说明,6.0和9.0的区别
Rotaxe 2012-03-28
  • 打赏
  • 举报
回复
int i = static_cast<int>(d);
d已经超出int范围,强转结果是不确定.
6.0和9.0 结果不同也正常
whslovexyp 2012-03-28
  • 打赏
  • 举报
回复
消灭零回复

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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