广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    c++中2/5等于0,怎么办?哪错了?

    来源:网络收集  点击:  时间:2024-03-01
    【导读】:
    c++程序运行中,2/5=0,这是为什么?出现了什么问题,小编在这里带大家深度了解下这个问题,怎么解决这个问题。用提前设置类型,和强制类型转换解决问题。工具/原料morevc++6.0软件电脑明确概念1/6分步阅读

    首先大家要明确的一个概念就是:“整数除法的结果是整数,小数部分被截取”

    2/6

    分析“2/5”其结果是0.04,但是因为“整数除法结果是整数,小数部分被截取”所以,计算机运行程序后结果是0。

    3/6

    观察程序代码,a,b都被赋予整型,所以程序运行结果是0。

    4/6

    学习下强制类型转换的语句:static_cast类型名(变量名)

    5/6

    在这里给大家普及下类型转换的一些规则:

    1.在进行二元运算的时候,若操作数是longdouble型,则将另一个转换为longdouble型

    2.若操作数是double型,则将另一个操作数转换为double型(所以对于问题的解决我们只需要将a,b其中一个转换为double型就行了)

    3.若操作数是float型,则将另一个操作数转换为float型。

    4.若操作数是long型,则将另一个操作数转换为long型。

    5.若操作数是unsignedlong型,则将另一个操作数转换为unsignedlong型。

    6.若操作数是unsignedint型,则将另一个操作数转换为unsignedint型。

    7.如果不是上述的三种情况,则两个操作数都转换成int型。

    6/6

    这里小编以float型为例,写个程序,验证下:

    #includeiostream

    using namespace std;

    int main()

    {

    int a=2;

    float b=3.5;

    couta+b=a+bendl;

    return 0;

    }

    因为 b是float型,所以a自动转换成float型,所以a+b结果也是float型。

    解决问题1/3

    一种方法就是将a或者b中其中一个直接赋予非整型的类型。

    #includeiostream

    using namespace std;

    int main()

    {

    int a=2;

    double b=5.0;

    cout2/5=a/bendl;

    return 0;

    }

    2/3

    另一种方法就是强制类型转换。强制将整型数据转换成非整型。

    当然转化a,b其中任何一个就行了。

    代码如下:

    #includeiostream

    using namespace std;

    int main()

    {

    int a=2,b=5;

    cout2/5=static_castdouble(a)/bendl;

    return 0;

    }

    3/3

    强制类型转换,可以将int型转化成double型,也可以将double转换成int型。

    等等各种数据类型之间的转换。

    注意事项

    用c++进行数值运算的时候要特别注意整数相除的结果是整数这一概念。

    用强制类型转换解决类型不同的问题。

    c++
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_209662.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-04 23:10:21  耗时:0.026
    0.0256s