读书人

一个课后练习不解 求高手解答,该怎么处

发布时间: 2012-03-29 12:53:12 作者: rapoo

一个课后练习不解 求高手解答
练习的要求是 what will be the output of the follwing programs:
#include<stdio.h>
void main()
{
int i=2,j=3,k,l;
float a,b;
k=i/j*i;
l=j/i*i;
a=i/j*j;
b=j/i*i;
pintf("%d%d%f%f",k,l,a,b);
}
难道输出结果不应该是232.000003.00000吗?
可为啥是"020.0000002.0000006"?
先谢谢各位大侠了,拜托答案给详细点。

[解决办法]
K是整形,i/j变整形后就是0,直接舍弃了小数部分 而j/i的值就是1
[解决办法]
i,j之间的运算是和k,l,a,b无关的。
即对于k=i/j*i,先计算i/j,计算结果转化为整型(为0),再与i相乘(为整型0),计算结果最后赋值给k(=0);
对于b=j/i*i,先计算j/i,计算结果转化为整型(为1),再与i相乘(为整型2),计算结果自动转换为浮点型赋值给b(=2.00000)

读书人网 >C语言

热点推荐