关于C/C++的kbhit()函数

为什么使用kbhit()函数时,在while()循环中有类似于按键的东西可以输入然后得到结果注意循环只有一次!!!而没有while循环直接if就没有按键直接得到结果,还有... 为什么使用kbhit()函数时,在while()循环中有类似于按键的东西可以输入然后得到结果注意循环只有一次!!!而没有while循环直接if就没有按键直接得到结果,
还有为什么a++在if里面才会有效果,在外面直接得到结果呢???
展开
 我来答
家萧从怀莲
2019-11-16 · TA获得超过3836个赞
知道大有可为答主
回答量:3153
采纳率:26%
帮助的人:208万
展开全部
首先说,我用gcc编译时出现了与lz相同的差1情况,但用其他编译器无此现象,pow的实际行为来自于各个编译器的不同实现,各有差别是可以理解的,有误差更是无可厚非,然哪怕计算值比理论值少那么0.00000001,转换成整型时结果都会减1。但是传递参数给pow函数时,前后两次的参数事实上是一样的,同样的输入pow不可能会产生不同输出。我看了下gcc产生的汇编代码,发现实际上第二次调用pow实际上并没有真的调用,因为参数都是常量,gcc直接省略了pow调用过程而直接把结果值15625传给了printf函数。相同的调用做了不同处理,因而出现了两种结果。
mqcake
2018-08-21 · TA获得超过218个赞
知道小有建树答主
回答量:694
采纳率:0%
帮助的人:236万
展开全部
因为kbhit是非阻塞的,不按键返回值是0,所以你 while一直在执行,起到了阻塞的效果,只有你按键以后,while循环才能结束。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式