c语言自动转换

main(){doublenum1;intnum2,sum;num1=1;num2=2.5;sum=num1+num2;printf("num1+num2=%f\n",n... main()
{
double num1;
int num2,sum;
num1=1;
num2=2.5;
sum=num1+num2;
printf("num1+num2=%f\n",num1+num2);
printf("sum=%d\n",sum);
}

这个输出结果是多少 是怎么转换的
书上num1+num2=3.500000,我怎么弄也是3.000000
展开
 我来答
c_cjjyuyan
2010-11-27
知道答主
回答量:14
采纳率:0%
帮助的人:0
展开全部
函数主体的解释:
1.声明一个双精度型数据 num1,
2.声明两个整型数据 num2,sum,
3.给单精度型变量num1赋值为1.000000(双精度型数值默认保留小数点后六位),
4.给整型变量num2赋值为2.5,在这里因为是将浮点数赋值给整型变量所以会将后面的小数部分丢掉而最终把2赋值给num2,
5.将变量num1和num2的值相加赋值给sum,这里是一个双精度型数值num1(1.000000)和一个整型数值num2(2)相加,编译器会把整型数值2向高一级转换为双精度型数值即2.000000,相加的结果为3.000000,最后将3.000000赋值给整型变量sum时,他会只去整数部分,小数部分丢掉,所以sum为0;
6.打印num1与num2的和,结果为:num1+num2=3.000000;
7.打印sum的值,结果为: 3,

在转换过程中,只有数值发生类型变化,该变量的类型是不变的。

书上有些错的
我又不乱来9527z
2010-11-26 · TA获得超过116个赞
知道答主
回答量:65
采纳率:0%
帮助的人:69.1万
展开全部
结果是 3.5
3
printf("num1+num2=%f\n",num1+num2)输出的是数据类型是%f(浮点型),所以是3.5
printf("sum=%d\n",sum)输出的数据类型是%d(整形),在计算机中3.5取整就是3了
希望 对你有帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aqwgf80
2010-11-27 · TA获得超过225个赞
知道答主
回答量:142
采纳率:0%
帮助的人:0
展开全部
我用MinGW 编译,在32位windows 机器上是正数, 你试试把 %1d 改成 %ld (LD)
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kabrbu
2010-11-26 · TA获得超过705个赞
知道小有建树答主
回答量:599
采纳率:0%
帮助的人:449万
展开全部
我用MinGW 编译,在32位windows 机器上是正数, 你试试把 %1d 改成 %ld (LD)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式