为了账号安全,请及时绑定邮箱和手机立即绑定

为什么结果不一样啊?

为什么结果不一样啊?

C
慕标9903134 2016-06-12 16:07:32
查看完整描述

2 回答

?
super_mb

TA贡献101条经验 获得超107个赞

强制类型转换应该不是说把这个变量本身的类型给改变,这里的变量num,你给定义的是double类型,那就只能给它赋值浮点数,而你这里把一个浮点数转换为int型赋值给一个double型的变量,是不对的。你可以:

double num = 2.5;

printf("num的整数部分是:%d\n", (int)num);

我是这么认为的,而显示的结果为什么是那样我也不知道怎么解释。

查看完整回答
2 反对 回复 2016-06-12
?
小雾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。所以错误应该在这里。
}

 

查看完整回答
反对 回复 2016-06-13
  • 2 回答
  • 0 关注
  • 1256 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信