int a=3, b=2;
printf("%f",a/b);//为什么会输出来0.00000啊?
在a/b前加(float),这样就可以正常显示值了;
你可以单步运行试试,a/b的值是正确的,但是在printf那一步就会出问题;
具体你可以单步运行下面两个程序试试!
#include
main()
{
int a=3, b=2,c;
float d;
c=a/b;
d=a/b;
printf("%f\t,%f\n",c,d);
printf("%d\t,%d\n",c,d);
}
#include
main()
{
int a=3, b=2,c;
float d;
c=a/b;
d=a/b;
printf("%f\t,%f\n",(float)c,d);
printf("%d\t,%d\n",c,(int)d);
}
你打错了!你打的应该是b/a把?
因为你这是非法操作,a/b的类型是int值,你输出格式是%f这个行为是undefined的编译器应该会提醒你
你定义的是整型变量a,b,a/b=0.如果定义浮点型变量float a=3.0;int b=2,就对了。
(double)a/(double)b
否则是整除
因为你这是非法操作,a/b的类型是int值,你输出格式是%f这个行为是undefined的编译器应该会提醒你
a/b 输出应该是1.00000.
因为a是整形,b也是整形,相除之后结果是1,相当于:int i = a/b;printf("%f",i);
你可以这样写:printf("%f",(float)a/b);//只要将其中一个转化成float型,那么结果就是float了
int a=3, b=2;
printf("%f",(float)a/(float)b);
你定义的变量是int型,而你要求输出的结果是“%f”,即浮点型,所以你可以在输出的时候对其进行强制类型转换,转换为浮点型
Debug Error!
Program: main.exe
runtime error
#include
#include
main()
{
float a=2,b=3;
printf("%f\n",b/a);
system("pause");
return 0;
}
应该这样写
#include
#include
main()
{
int a=2,b=3;
printf("%d\n",b/a);
system("pause");
return 0;
}
或者
#include
#include
main()
{
int a=2;
float b=3;
printf("%f\n",b/a);
system("pause");
return 0;
}
你的 a,b变量是int 打印语句占位符虽然用的是%f 但是实际程序是先 int a / int b 的结果 再转换成 float 所以是0了
两个整型变量相除结果是趋零结尾,
printf("%f",(double)a/b);
强制类型转换 printf("%f",(double)a/b);
你的格式控制输出就是float,会自动转换成float的