【问题标题】:What is the value assigned to num in the statement语句中赋予 num 的值是什么
【发布时间】:2017-04-14 20:50:42
【问题描述】:

语句中赋值给num的值是多少:double num = 5/2;?

有些网站说 2 有些说 2.5。请帮忙。

【问题讨论】:

  • 你试过double num = 5/2;然后cout << num
  • 你能把说它是2.5的网站的网址贴出来吗?
  • 你尝试的价值是多少?您确实意识到,只需将代码输入编辑器并尝试它会花费您更少的时间和精力,而不是输入您的浏览器并从中创建一个问题......更不用说您必须等待的时间了一个答案。
  • 2个字:整数除法

标签: c++ visual-c++


【解决方案1】:

double num = 5/2; 给出 2 作为结果。

double num = 5/2.0;double num = 5.0/2.0;double num = 5.0/2; 结果为 2.5。

您最好自己尝试这些代码。当您一个人无法充分思考/工作时,请提出问题。这样您可以了解更多信息。

【讨论】:

    【解决方案2】:
    double num = 5/2;
    

    在大多数情况下,每个表达式,即使它是更大表达式的子表达式,也会被单独计算。结果的类型和值由(子)表达式本身决定,而不是由它出现的上下文决定。

    在表达式5/2 中,除法运算符有两个操作数,都是int 类型,所以它产生int 类型的结果。 (在某些语言中,整数除法会产生非整数结果。C++ 不是这些语言之一;C 也不是。)

    5/2 的结果是2(因为整数除法会截断)。该值被转换为num 的类型并用于对其进行初始化,因此num 的初始值为2.0。 (22.0 是不同的;它们具有相同的数学值,但类型不同,即intdouble。这就是为什么需要隐式转换的原因。)

    如果您希望 num 具有 2.5 的值,有几种方法可以做到:

    double num = (double)5 / (double)2;
    double num = (double)5 / 2;
    double num = 5.0 / 2.0;
    double num = 2.5;
    

    在第二个例子中,左右操作数是不同类型的,所以通过一些适度复杂的规则将它们转换为通用类型。在这种情况下,int 操作数将转换为 double

    我通常更喜欢在浮点表达式中使用浮点常量而不是整数常量(5.0 而不是5)。在某些 情况下,整数常量会根据需要转换为浮点数,但正如我们在这里看到的,它更多地适用于单个文字而不是常量表达式。

    【讨论】:

    • 哇。解释得很好。
    【解决方案3】:

    num 的数据类型为 double。因此,它将保存一个浮点值。
    但是,这也取决于您分配给它的内容。
    您当前正在为它分配一个整数值。 5/2 = 2.
    因此,num 将被分配为2,在内部它将被保存为2.0

    如果你想让 num 为 2.5,那么在赋值之前将其转换为浮点值。
    num = 5.0 / 2 | num = 5.0 / 2.0 | num = 5 / 2.0 将导致 num = 2.5

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-10
      • 2020-09-09
      • 2014-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多