Lucky_Glass 2017-11-11 23:37 采纳率: 33.3%
浏览 3062

C++ double类型强制转换int类型为什么会有Bug?

做一道水题的时候突然发现一些问题:
定义了一个int变量B=90;直接用%d输出 int(B * 0.3) 输出来是26...
图片说明
但是换一种方法就输出27了:
图片说明
问题出在哪?

  • 写回答

2条回答 默认 最新

  • 天之上有什么 2017-11-12 02:22
    关注
     C++中最好不要使用C中的的强制类型转换,转换后可能会带来各种各样的麻烦,在C++提供了如下四种形式:
    

    const_cast(expression)

    dynamic_cast(expression)

    reinterpret_cast(expression)

    static_cast(expression) ,
    是四种新风格的强制转型,从而实现C++中的类型安全。使用C中的强制类型转换可能会产生数值截断、内存扩张等问题,有可能会遇到各种各样的问题,有些可能很容易被察觉,有些极难察觉而且不会有提示。

    评论

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 虚心请教几个问题,小生先有礼了
  • ¥30 截图中的mathematics程序转换成matlab