C语言运算符的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 17:47:44
#include<stdio.h>
void main()
{
int i=5,j,k=3;
float x=5.5,y;
j=x/k;
printf("%d \n",j);
printf("%f \n",j);
printf("%f \n",x/k);
}
这个程序显示为什么是1 0.000000 1.833333
我觉得因该是 1 1.000000 1.833333才对啊,请高手指教

j=x/k; 相当于j=(int)(x/k);

而printf("%f",...),对于整型输出都是0

printf("%f \n",j);
>>
printf("%d \n",j);

printf("%f \n",j);
不同于
printf("%f \n", (float)j);

这样隐式转换,只是把j的数据[0x01],以float的格式来读取,float的存储格式和int型的不同,所以读出来的数据不一样.

二楼回答的部分对
prinf("%f \n",100);如果这样直接输出整数常量100,结果是0.000000
但是如果是
int j=3
printf("%f \n",j)
则要分析,如果在此之前有浮点数输出则输出上一个正确的浮点数,否则输出0.000000
下面的例程希望能有所帮助:
#include<stdio.h>
int main()
{
printf("%f \n",100);//Êä³ö0.000000
int i=5,j,k=2;
float x=5.5,y;
j=(int)(x/k);
printf("%d \n",j);
printf("%f \n",j);
printf("%f \n",x/k);
int t=22;
printf("%f \n",t); //Êä³ö2.750000£¬ÒòΪ×î&ord