Integer * float = ? in C



当我们用c中的整数乘以浮动时会得到什么?请解释。我很困惑,因为当我将摄氏摄氏摄入华氏度转换时以及许多其他conversion依时,我对此有问题。

当我们用整数乘以浮动时会得到什么?

tl; dr 我们得到浮点结果。

详细说明算术操作,如果两个操作数均具有不同的等级,则根据算术转换规则,较低等级的操作数被提升为级别 然后执行操作。在您的情况下,整数被提升为浮动类型,以及操作如果浮动类型的操作。

引用C11的相关部分,第6.3.1.8章,通常的算术转换

许多期望算术类型操作的运算符会导致转化和产量结果 类似方式类型。目的是确定操作数的常见实际类型 并结果。对于指定的操作数,每个操作数都会转换,而不会更改类型 域,对相应的真实类型是常见的真实类型的类型。除非 否则,明确说明的是,常见的实际类型也是相应的真实类型 结果,其类型域是操作数的类型域,如果它们是相同的,则 否则复杂。此模式称为通常的算术转换:

,对于这种特定情况,

  • 否则,如果两个操作数的相应实际类型是float,则 操作数被转换为不更改类型域的,其类型 相应的实际类型是float

它是浮动的,但是您应该注意精确损失,溢出和下水。建议阅读

ieee std。754-1985。IEEE二进制浮点算术标准

以及

d。戈德堡。每个计算机科学家应该知道的 浮点算术[J]。ACM计算调查(CSUR),1991年, 23(1):5-48。

在这样的情况下,我会施放次要类型(整数)并执行其余操作。结果和操作数都是浮动类型。

最新更新