语句中赋予 num 的值是啥
Posted
技术标签:
【中文标题】语句中赋予 num 的值是啥【英文标题】: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个字:整数除法。
【参考方案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
。 (2
和2.0
是不同的;它们具有相同的数学值,但类型不同,即int
和double
。这就是为什么需要隐式转换的原因。)
如果您希望 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
【讨论】:
以上是关于语句中赋予 num 的值是啥的主要内容,如果未能解决你的问题,请参考以下文章
c语言中赋值表达式的值是啥,就比如关系表达式的值是一个逻辑值
C语言问题 赋值表达式返回值是啥?比如j=0这个表达式的返回值是啥?