我的理解是,当乘以例如float和int时,int会被提升为浮点数,因此产品可以有一个小数部分。另一方面,当将浮点数除以int时,没有提升,并且商的任何小数部分都被丢弃。这种不对称的原因是什么?
float f1 = 13.3;
int i1 = 2;
float product = f1 * i1; // Product will be 26.6
float quotient = f1 / i1; // Quotient will be 6.0
编辑:嗯,我想我错了。 int也在分区中被提升。对?截断仅适用于具有两个整数的除法。对?这里的网站最佳做法是什么,我应该删除这个问题,因为它的基础很差吗?
答案 0 :(得分:3)
另一方面,当将一个浮点数除以一个int时,没有任何提升,并且该商的任何小数部分都被丢弃。
这根本不正确。保留小数部分。在这个意义上,乘法和除法运算以相同的方式工作。
答案 1 :(得分:0)
如果你运行这个程序,如:
#include <stdio.h>
int main()
{
float f1 = 13.3;
int i1 = 2;
float product = f1 * i1; // Product will be 26.6
float quotient = f1 / i1; // Quotient
printf( "product = %f\n",product );
printf( "quotient = %f\n", quotient );
}
然后输出
product = 26.600000
quotient = 6.650000
根据C标准(6.5.5乘法运算符)
3通常的算术转换是在操作数上执行的。
和(6.3.1.8常规算术转换)
否则,如果任一操作数的相应实数类型为float, 另一个操作数在不更改类型域的情况下转换为a 类型,其对应的实际类型是float.62)