整数*浮点数=?在C.

时间:2017-02-15 15:18:59

标签: c multiplication arithmetic-expressions

当我们在C中乘以浮点数时会得到什么?请解释。我感到很困惑,因为当我遇到Celsius到Fahrenheit转换以及许多其他转换时遇到问题。

3 个答案:

答案 0 :(得分:7)

  

当我们将float乘以整数时会得到什么?

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

详细说明,对于算术运算,如果两个操作数具有不同的等级,则根据算术转换规则,低等级的操作数被提升为更高等级然后执行操作。在您的情况下,整数被提升为浮动类型,而操作的结果是浮动类型。

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

  

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

,对于这个具体案例,

  
      
  • 否则,如果任一操作数的对应实数类型为float,则为另一个   操作数在不更改类型域的情况下转换为其类型的类型   相应的实际类型为float
  •   

答案 1 :(得分:0)

它漂浮,但你应该注意精度损失,溢出和下溢。推荐阅读

  

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

以及

  

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

答案 2 :(得分:0)

在这样的情况下,我总是抛出次要类型(整数)并完成剩下的操作。结果和操作数都是浮动类型。