为啥在C语言中,这个printf的输出是错误的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥在C语言中,这个printf的输出是错误的?相关的知识,希望对你有一定的参考价值。

问题如下图所示:

请问为何“f=%d”的输出成了“f=0”?就算强制转换类型,5/2也应该得到2呀?
为什么“i=%f”的输出错误,变成了0.000000?

你这并不是强制类型转换,printf是个变参函数,而且比较“笨”,它只能识别你给他设定好的输出类型,因为你设定为%d,所以只能输出出错,5/2是结果是整数,而5.0/2是浮点数运算,结果为浮点数,所以类型不匹配。 谢谢,望采纳追问

那假如连续几个输出中,第二个输出出错,会对第三个输出有影响?如下图

追答

会影响的,你一个类型错,后面的全都有影响,
所以要加强对printf和scanf函数的掌握,前期可能感觉很不习惯,用久了就会发现这两个函数的好处了

参考技术A 你这样做5.0/2.0和之后的i=...都没有进行强转
强转得通过变量进行
int i = 5.0/2.0 ;
printf("%d", i );
答案是2

在C语言里printf是啥意思?怎么用??

参考技术A

在C语言中printf( )是专门用于输出的语句。 用法如下:

1、printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。

2、printf()函数的调用格式为: printf("", )。

3、格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器,控制台等)输出字符。

c语言中scanf()是专门输入的语句。用法如下:

1、scanf("%d %lf %Lf",&a,&b,&c);  //输入int型变量a,double型变量b了,long double型变量c,并依" "(空格)做为间隔 。

2、scanf("%f,%c",&d,&e);    //输入float型变量d,char型变量e,并依","(逗号)做为间。

3、%o,%x分别为输入8进制,16进制。

以上是关于为啥在C语言中,这个printf的输出是错误的?的主要内容,如果未能解决你的问题,请参考以下文章

C语言编程问题,下面的这个程序为啥在添加了输出答对、答错题目个数,就会出现主函数未定义的问题?

C语言,为啥用 printf("%d",c*0.85)出来的结果不对?

VS2010 编写c语言变量为啥要初始化?

C语言,求高手分析双精度的输入,为啥定义一个双精度,输入函数中少了一个l,只用%f,可以执行,结果错误

c语言输出字符串为啥是乱码?

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