C语言,为啥用 printf("%d",c*0.85)出来的结果不对?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言,为啥用 printf("%d",c*0.85)出来的结果不对?相关的知识,希望对你有一定的参考价值。
printf函数是格式化输出函数,一切输出都需要定义格式!
%d 输出的是 整数,你后面的参数c*0.85 计算结果会隐式转换为浮点数(小数),按照整数的输出方式 将输出 整数部分,小数部分被忽略
输出浮点数(小数)用 %f 或者 %lf
输出字符用 %c
如果%c 后面的参数是个整数,将输出此整数对应的ASCII码 字符
如果%d 后面的参数是个字符,将输出此字符对应的ASCII码 整数
追问不是,结果变得无比的大……就想知道为什么
追答是不是变量c 未初始化 ,代码贴上来看看
代码没问题,输出用 %lf 就好了呀,无限大的原因是0.85编译器默认处理为double类型占用8个字节,而输出时是%d整型是4个字节,会截取高位字节或者低位字节输出导致显示无限大,其实输出完整的话是有小数点的
参考技术A printf("%f",c*0.85) 参考技术B %d 是打印十进制的整形数据C语言初练习为啥下面代码编译后没有运行?
#include<stdio.h>
int main()
int hour1,minute1;
int hour2,minute2;
scanf("%d #d",&hour1,&minute1);
scanf("%d %d",&hour2,&minute2);
int t1=hour1*60+minute1;
int t2=hour2*60+minute2;
int t=t2-t1;
printf("时间差是%d小时%d分",t/60,t%60);
代码中稍微有点问题,第一个scanf中写成了#,应改为百分号%
修改后的测试运行如下,编译器使用的是小熊猫C++,版本0.14.0
参考技术A scanf函数后的第二个也应写%d以上是关于C语言,为啥用 printf("%d",c*0.85)出来的结果不对?的主要内容,如果未能解决你的问题,请参考以下文章
c语言在 电脑上用scanf输入001,为啥printf输出显示是1,怎么把输出显示也变成001?