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

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中的强制类型转换可能会产生数值截断、内存扩张等问题,有可能会遇到各种各样的问题,有些可能很容易被察觉,有些极难察觉而且不会有提示。

    评论

报告相同问题?