c语言中float和float型相乘得什么类型?

2024-11-15 02:00:01
推荐回答(5个)
回答1:

float与float相乘运算,为避免丢失精度,运算槐芹结果类型提升为double类型。

float是C语言中的一个数据类型的关键字,表示单精度浮点型(双精度浮点型为double)。

定义格式为:floata;//a表示一个浮点型的变量。

C语言规定浮点型纳袭在内存占用4个字节,精度为7位,取值范围为:3.4*10^-38~3.4*10^38或者-(3.4*10^-38~3.4*10^38)。

扩展资料

FLOAT构成

浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。

数符占1位二进制,表示数的正负。

指数符占1位二进制铅茄毕,表示指数的正负。

尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点。

指数存指数的有效数字。

指数占多少位,尾数占多少位,由计算机系统决定。

回答2:

C语言中规定,float 与float相互运算时,为避免丢失精度,结果类型提升为double类型。
其中的运算包括所有数学运算,即加减乘除。

这样做的好处是,不会出现因为计算而引起的溢出或精度丢失肆旅。
如两个很大的float数相乘,或两个绝对值很小的float数相乘,前者可能导致溢出,而虚雹唤后者则可能出现数值过小超出float表示范围。
升级为double后,就可以差凯确保不会出现这两种情况。然后再根据赋值情况,转换为需要的值。

回答3:

C语言的类性转换规则,自动转换时是低类型向高类型迹老转换,而强制转换也可以将高类型转换为低类型,但可能造成信息丢失。低类型是内存镇举中占用字节数少的数据类型,即通常所说的窄类型,但是占用相同字节数的数据类型也有高低之分,比如long和unsigned long都占4个字节,但是表达式中同时有long和unsigned long时,先把long转换为unsigned long,然后再参与运算。
参照这个下面关系图来转换:
char和short → int → unsigned int → long → unsigned long → float → double → long double
注意:表达式中的float型变量不会自动转换为double型!!!这一条规则在C89中就已明确。但是很多教材采用了传统C的说法——“float将自姿旅升动转换为double,然后再参与运算”,这对于理解C语言没有本质的不同,但是却是错误的。

至于你的问题:就是最高类型为float的表达式中,其他类型(也就是上面那个关系图float前面的数据类型)的数据转换为float型数据,例如int*float,则将int转换为float,最后的结果为float型,当然有double类型的表达式中,最后结果为double型

回答4:

表达式中,要求两个操作数的类型一致,如果拍卖盯不一致,系统会自动将低类型操作数转换成另一个高类型操作数的类袭和型,再进行运配友算,规则如下:
short、char-->int-->long->unsigned long-->float-->double-->long double

回答5:

float类型,double和float会配让为double,如果不强制转换赋值的话,和高卖答存储有关,以最大存储为最先戚慧