当我们在C中乘以浮点数时会得到什么?请解释。我感到很困惑,因为当我遇到Celsius到Fahrenheit转换以及许多其他转换时遇到问题。
答案 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)
在这样的情况下,我总是抛出次要类型(整数)并完成剩下的操作。结果和操作数都是浮动类型。