2017-02-15 84 views
-4

当我们用C语言中的整数乘法时,我们得到了什么?请解释。我很困惑,因为当我遇到问题时,我做摄氏到华氏转换,还有很多其他转换。Integer * float =? in C

+7

我们得到整数提升为一个浮点数,结果也是一个浮点数。任何体面的教程应该涵盖。 – StoryTeller

+1

读取数据类型提升规则。 – haccks

+4

如果您有特定的问题,请显示您的代码,我们可以告诉您如何做得更好, – crashmstr

回答

7

什么,我们得到当我们乘浮点整数?

TL; DR我们得到一个浮点结果。

为了详细描述,进行算术运算,如果两个操作数是不同的秩的,根据算术转换规则,与较低秩操作数被提升到较高秩,然后执行该操作。在你的情况下,整数被提升为浮动类型和操作的结果,如果是浮动类型。

C11引用的相关部分,章节§6.3.1.8,常见的算术转换

许多运营商意想不到算术类型转换的原因和产量结果 类型以类似的方式操作数。目的是确定操作数 和结果的常见实型。对于指定的操作数,每个操作数都将被转换,而不会将类型为 的域更改为相应的实型是普通实型的类型。除非 明确规定,否则,常见的真正的类型也相应的实型 结果,其类型域是操作数的类型域,如果它们是相同的, 和复杂的除外。这种模式被称为通常的算术转换:

,并且对于这个特定的情况下,

  • 否则,如果对应的实数型有一个操作数的是float,其他 操作数转换,无类型域的变化,以一类型,其 对应的真实类型是float
0

它是浮动的,但您应该注意精度损失,溢出和下溢。推荐阅读

IEEE标准。 754-1985。 IEEE标准二进制浮点运算

D.戈德堡。每一位计算机科学家应该了解的关于浮点运算的关于 [J]。 ACM Computing Surveys(CSUR),1991, 23(1):5-48。

0

在这种情况下,我总是抛出次要类型(整数),并做其余的操作。结果和操作数将全部为浮动类型。