为什么结果不一样啊?

http://img.mukewang.com/575d17e800018f6c17520807.jpg

慕标9903134
浏览 1257回答 2
2回答

super_mb

强制类型转换应该不是说把这个变量本身的类型给改变,这里的变量num,你给定义的是double类型,那就只能给它赋值浮点数,而你这里把一个浮点数转换为int型赋值给一个double型的变量,是不对的。你可以:double num = 2.5;printf("num的整数部分是:%d\n", (int)num);我是这么认为的,而显示的结果为什么是那样我也不知道怎么解释。

小雾3378873

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。所以错误应该在这里。} 
打开App,查看更多内容
随时随地看视频慕课网APP