(1)计算的时候,c语言中,会按一定顺序将类型转换后再计算。但是结果是保留自身值,之后如果赋值给其他一个变量,那么这个变量会将得到的值再转换成与自身类型相符的值。题中,
m=1/2,因为等式右边计算的是两个整形变量相除(类型不需要转换),根据c语言的“/”运行可以知道,这个是取整计算,结果是0,所以m=0
(2)因为m
,n都是浮点型,所以,“/”计算是求浮点类型的值,也就是和我们平常数学里的除号运算是一样的,也就是1/2=0.5,或者也可以写成1.0/2.0=0.5,所以,z=0.5
第一种:
float
m;
m=1/2;
1,为整数,2为整数,
1/2
=
0
,整数除整数,按照C语言规定,只保留整数位
m
=
(float)0
=
0.000000
,
将整数0转化为浮点数0.000000
第二种
m,n
已经是float,
所以是float类型的除法,当然是
0.5
1、C语言中和除法相关的运算符有两个"/"整除运算符和"%"取余运算符。
2、整除就是求商,取余就是求余数,这是两者最本质的区别,需要注意的是在C语言%取余运算符只能操作整型数据对象。
因为第一种,默认1和2是整数,是按照整数运算的,得到的也是整数,后来整数转化为float类型时即为0.00,即1/2=0
1%2=1的道理
而第二种中申明了为float类型的,就按照float算数运算,相当于得到的也是float类型。说到底就是第一种除法运算得到的是整数,后来转化为float类型赋值给m,第二种除法运算得到的是float类型,不需要转化