关于C语言类型自动转换的
发布网友
发布时间:2022-04-25 12:19
我来回答
共5个回答
热心网友
时间:2023-08-06 21:29
#include
<math.h>
例如
sin(x);
sin
的参数
应当是
double型,计算结果
返回
也是
double型。
如果
你的参数
是
float类型:
float
a=0.4,
r;
r
=
sin(a);
sin
计算
时,a
被提升为double类型,
计算结果
也是
double型,
而
你的
r
是
float
型,
计算结果
再从
double
转
float
。
float
a=0.4;
double
r;
r
=
sin(a);
sin
计算
时,a
被提升为double类型,
计算结果
也是
double型,赋给r
==
如果参数本来就要求是
float
型,你也给了
float
型,当然不会
"提升"到
double.
==
表达式计算中,float
与
double
混合计算,则
float
会
"提升"到
double,以保证
精度。
热心网友
时间:2023-08-06 21:29
n=1/i
此式会出现1/i得到的结果经过转型后赋值给n,注意,是1/i得到相同类型(也就是整型)数值之后才转型(变为float),此时不论i等于2或是30所对应的1/i都是整型零,然后变成float赋值给n。
n=1/(float)i
此式则是一开始i便是float型,从而1除以i得到的是想要实现的float型结果,然后将结果赋值给n。
热心网友
时间:2023-08-06 21:30
你没弄懂
意思是说 a+b 如果a是int b是float 那么 加出来的结果就是float 例如 4+2.5 6.5 那么就需
要用float变量来接收 除法也是同理
你的 1 和 i 都是int 算出来还是int 这也就是为什么 3/2 等于1 而不是等于 1.5了
你出了给i前面加float 强制转换以外 还可以 这样 1.0/i
热心网友
时间:2023-08-06 21:30
计算完了会转换。
如果运算符的两端有一个是float就会自动转化。但是=右边都是int,即/两边都是int,所以不转换。
热心网友
时间:2023-08-06 21:31
i是整型的,在while循环中,i=2,3......29, 1/i,C语言中两个整数相除,保留商的值,结果自然是0,(float)i 强制类型转换,将i转换为2.000000,3.000000 ....... 1/i,结果就带小数