发布网友
共8个回答
热心网友
这个,怎么说呢,首先你看下这句a=1/6,你要明白,C并不把1/6当成一个数值进行处理,这只是一个运算式,也就是说,C要先用1去除6,得到一个数值0.166667,然后,C强制将其转化为整型(1和6都是整型,C会进行默认强制转换为整型),得到0,然后将0再赋给a,转化为Float型,于是就得到0.0000了,你可以将1或是6中的一个改为1.00或6.00就会转换为浮点型了,
热心网友
改成如下形式:
{
float a;
a=1.0/6.0;
printf("%f",a);
}
输出时最好*小数位数,例如:printf("%.6f",a);是输出六位小数。
热心网友
这里牵扯到一个运算优先级的问题
在同一混合运算中 把运算优先级低的类型转换成
运算优先级高的类型 (这个是系统自动转换和 强制转换两种技)
喜欢计算机语言的朋友可以加入
6833308 群
C C++ JAVA VC C# 等 我们共同学习交流
热心网友
1和6都是int型
”/”在两个整型数据之间被当做整除,然后将整数0换成了单精度型
只要在”/”的任何一边用单精度数据就不会出错了
热心网友
支持 estellia - 高级魔法师 七级 的答案
有理有据
热心网友
#include"stdio.h"
main()
{float a;
a=(float)1/6;
printf("%f",a);
}
正确答案!!!
热心网友
改为如下形式:
main()
{float a;
a=1.0/6;
printf("%f",a);
}
热心网友
因为a=1/6
这步,
a 被赋值,系统被认为是整型数,
改为如下
a=1.0/6