2020-02-01 16:14发布
feixiang1990 发表于 2013-2-2 11:22 有个问题啊; float f= 5.75; 那么(int)f 是多少呢?
yoz 发表于 2013-2-2 11:28 刚才说错了,(int)5.75==0 而 float a=5.75;
最多设置5个标签!
(int)f = 5;
(unsigned char)(-2) = 0xfe
(编辑原因:补回我错误的思路,提出疑问,也消除话没说清楚引起的误会)
5.75就是101.11,也就是1.0111*2^10,对应应该是0 10000001 0111 0000 0000 0000 0000 000,对应的int应该是1085800448
(但是读出却是0,于是我做了实验)
/********************/
#include <stdio.h>
int main(void)
{
float a = 5.75;
int b;
b = (int)a;
printf("%d " , b);
printf("%d " , a);//我故意试验两种方法的,在工作中不可能做这么2的事
return 0;
}
/********************/
才明白
(int)5.75==5
而
float a=5.75;
printf("%d ",a);
会输出0
我之前对c理解的还是不到位
现在还是有疑惑,为什么用%d会输出0而不是1085800448?难道是大小端?我还不明白
float a=5.75;
printf("%d ", (int)a);
肯定结果是5
你输出0是因为没加强制类型转换
效果等同于 *(int*)&a, 而不是(int)a
一周热门 更多>