2 回答
super_mb
TA贡献101条经验 获得超107个赞
强制类型转换应该不是说把这个变量本身的类型给改变,这里的变量num,你给定义的是double类型,那就只能给它赋值浮点数,而你这里把一个浮点数转换为int型赋值给一个double型的变量,是不对的。你可以:
double num = 2.5;
printf("num的整数部分是:%d\n", (int)num);
我是这么认为的,而显示的结果为什么是那样我也不知道怎么解释。
小雾3378873
TA贡献5条经验 获得超0个赞
double ----64位
float-----32位
int-----16位
少位转多位时不足的用0补足,多位转少位就有可能丢数,原文中:
#include <stdio.h>
int main()
{
double num =(int)2.5; //取2.5的整数部分放入double 类型的num中,此时num=2.000000……
printf("num的整数部分是%d",num); //因为%d是带符号的十进制整数格式符,此时又把2.000000……转换成整数,
return 0; //多位转少位时,这个数就丢掉了,所以结果为0。所以错误应该在这里。
}
- 2 回答
- 0 关注
- 1256 浏览
添加回答
举报
0/150
提交
取消