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语言三维数组问题

c语言在 电脑上用scanf输入001,为啥printf输出显示是1,怎么把输出显示也变成001?

c语言int k=10; for(;!k;k--)printf("%d",k--)为啥无答案

c语言请问while循环为啥执行不了?

C语言中的default是啥意思,怎么用

c语言的 求这个用程序怎么写