c语言关于整数相除
有定义和语句:int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); 则 printf("%d %d %3.1f %3.1f ",a,c,f,x); 的输出结果 若有定义和语句:double d; float f; long l; int i; i=f=l=d=20/3; 则 printf("%d %ld %f %f ", i,l,f,d);的输出结果是(小数点后只写一位)这两个整数相除的部分是怎么计算的为什么第一个的f是1.5,第二个的f是6.0不是6.7
第一个:
a=f/=c*=(x=6.5);
=号是从右往左运算
计算过程:
1。x=6.5;
2。 c*=6.5; c=10*6.5=65;
3。f/=65; f=100/65=1.5;//保留1位小数
4。a=1.5=1; //取整数部分
第二个:
i=f=l=d=20/3;
1。 20/3=6; //整形运算,结果为整形,去掉小数部分的
2。d=6=6.0; //1位小数
3。l=d=6.0=6; //取整
4。f=l=6=6.0; //1位小数
5。i=f=6.0=6;//取整
你要注意的是
若一个表达式内,全部整形,则运算过程及结果只是整形
若有一个浮点,就会浮点运算
简单的如
1/2 结果就是0
而
1.0/2或1/2.0或1.0/2.0结果就是0.5了
热门标签: