gpt4 book ai didi

c - 在 c 中评估表达式以便用 double 值写入

转载 作者:太空宇宙 更新时间:2023-11-04 07:05:56 24 4
gpt4 key购买 nike

我正在做一道家庭作业题,除了这道题,我什么都能做。我想我知道如何去做,我只是想确认一下。

Assume the following declarations:

int a =1, b = 2, c = 3;

Fully parenthesize and evaluate each of the following expressions assuming they are evaluated in the order in which they are written.

所以我有 2 个表达式:

(double)a / b * c

a / (double)(b + c)

我用括号括起来

((double)a) / (b * c)

(a) / ((double)(b + c))

我只是不确定如何解决问题的双重部分,这是否意味着它的评估将以 3.000 或 5.000 之类的方式打印,而不仅仅是像常规 int 这样的3 还是 5?

最佳答案

我想你只需要明白,任何时候在整数类型和浮点类型之间有一个操作,整数类型被提升为浮点类型所以......

示例 1:

(double)a/b * c
>>> 1.0/2*3 = (0.5) * 3 = 1.5

这与整数除法会丢弃余数的非强制转换版本不同,您最终会得到 0... 1/2*3 -> 0 * 3 -> 3

示例 2:

a/(double)(b+c)
>>> 1/ (double) (2+3) = 1/(5.0) = .20

因此,当您随后将这些值分配给 float 或 double 时,它们将是那些值,如果将它们分配给整数类型,它们将分别为 1 和 0,因为它会丢弃余数...

关于强制转换适用于哪一部分(我认为这是你的问题的一部分)......在 C 中有一个非常固定的操作顺序,请参阅(operator precedence in c)......你会看到一个强制转换优先级高于除法……否则……

(double)1/2 * 3 -> (double)(1/2) * 3
>>> 0.0 * 3 = 0.0

关于c - 在 c 中评估表达式以便用 double 值写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32937708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com