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
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)