![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
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 展开
{
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 展开
展开全部
函数主体的解释:
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,
在转换过程中,只有数值发生类型变化,该变量的类型是不变的。
书上有些错的
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,
在转换过程中,只有数值发生类型变化,该变量的类型是不变的。
书上有些错的
展开全部
结果是 3.5
3
printf("num1+num2=%f\n",num1+num2)输出的是数据类型是%f(浮点型),所以是3.5
printf("sum=%d\n",sum)输出的数据类型是%d(整形),在计算机中3.5取整就是3了
希望 对你有帮助
3
printf("num1+num2=%f\n",num1+num2)输出的是数据类型是%f(浮点型),所以是3.5
printf("sum=%d\n",sum)输出的数据类型是%d(整形),在计算机中3.5取整就是3了
希望 对你有帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我用MinGW 编译,在32位windows 机器上是正数, 你试试把 %1d 改成 %ld (LD)
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我用MinGW 编译,在32位windows 机器上是正数, 你试试把 %1d 改成 %ld (LD)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询