初学C语言,请问这个程序的输出值为什么d =2

初学C语言,请问这个程序的输出值为什么d =2,第1张

#include<stdio.h>

void main()

{

  double a,b,c   

  int d

  b=3.3

  c=1.1//初始值带尺慎。 

 蠢敬 a=b/c//a=3.3/1.1=3.0

  d=b/c//d=3.3/1.1=3

  printf("%lf,%d",a,d)

  //这里要用%lf

  //理论输出值 应为3.000000, 3

  

  getchar()

}

如果输出实际d值为2, 

那么唯一的可能就是浮点数精度问题。

3.3/1.1得到3.0 实际上被存成了2.99999...

这样一个接近3的近似值。 然后 转为整型时,取整数部分为3.

PS 实际运行了一下困握,输出的是3.000000,3

并没有看到2

main()

{ int a=3,b=4,c=5,d=2

if(a<b)

if(b<c)

printf("%d",d+++1)

else

printf("%d",++d+1)

printf("%d\n",d)

}

你们可能会遇见这样的程序,很多人机器出来的结果是33,但是就是不知道为什么是33,先a<b为真,然后执行下面的语句,b<c为真所以执行第一个d+++1,也就是d++再+1,结弯宏码果为3(为什么等于3,C语言配套的书上有相关知识点不用我说了吧绝握),然后if执行结束,最后不能忘了还有一个printf("%d\n",d)很多人会说为什么最后结果为33,这个最后的语句就是答案。那么楼主提的问题跟我这个相似,就埋哪交给你们自己总结了,加油

1.程序的输出结果是肆和

$o

west,

youn

2.解释如下:

int

main(void)

{

char

ch

scanf("%c",&ch)//这句话,ch接收到字符g

for(ch='$'ch!='g'scanf("%c",&ch))//循环语句,初始条件是ch=‘$’覆盖掉先前g,

//基雹桐循环终止条件是ch=‘g',每循环一次输出字符搏坦ch,并读入一个新的字符,

//所以依次输出$o

west,

youn

putchar(ch)

return

0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12215154.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存