语句中赋予 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。 (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

【讨论】:

以上是关于语句中赋予 num 的值是啥的主要内容,如果未能解决你的问题,请参考以下文章

c语言中赋值表达式的值是啥,就比如关系表达式的值是一个逻辑值

C语言问题 赋值表达式返回值是啥?比如j=0这个表达式的返回值是啥?

cin>>x的值是啥

c语言中while(num)或if(num)就执行语句,num表示啥?

java在循环语句的执行语句赋予变量值循环结束后会释放吗?

c语言。 if(num&0x01),这个if语句里面判断的是啥?