帮看下这段C++发出声音的代码功能

#include<iostream>#include<windows.h>usingnamespacestd;intmain(){inti;for(i=1;i<100;)... #include<iostream>
#include<windows.h>
using namespace std;
int main()
{
int i;
for( i = 1;i<100; )
{
cout<<'\a';
cout<<"现在是第"<<i<<"次\n";
MessageBeep(0);
i++;
}
return 0;
}
--------------------------------------------------------
在循环里貌似起发声作用的只有\a 那MessageBeep(0);在这里的作用是什么呢?换成Beep()又会怎么样?这两个函数有什么区别?
展开
 我来答
eastseahdh
2013-03-13 · TA获得超过367个赞
知道答主
回答量:56
采纳率:0%
帮助的人:23.7万
展开全部
起发声作用的是MessageBeep(0)函数,它和Beep()的区别主要是是否是阻塞调用的。
MessageBeep()是异步(非阻塞)的,就是说程序执行到此函数后,不等发声完毕就继续执行它后面的程序,所以一般需要在循环中加入Sleep()函数来等待发声完毕再进入下次循环,所以按你的代码,应该不到一秒就结束循环,发声也是很短促。
After queuing the sound, the MessageBeep function returns control to the calling function and plays the sound asynchronously.
参考:http://baike.baidu.com/view/1887476.htm

而Beep()是同步(阻塞)的,就是说必须等待函数里发声完毕才会继续执行它后面的程序,所以你的代码把MessageBeep()换成Beep()的话,会发一百次Beep声音,执行完毕所花时间将是单次Beep参数所设时间的100倍。
The Beep function generates simple tones on the speaker. The
function is synchronous; it does not return control to its caller until the
sound finishes.
参考:http://baike.baidu.com/view/927791.htm
唯创智能
2024-05-10 广告
语音芯片根据集成电路类型来分,凡是与声音有关系的集成电路被统称为语音芯片(又称语音IC,这里应该叫成Voice IC),但是在语音芯片的大类型中,又被分为语音IC(这里应该叫成Speech IC),音乐IC(这里应该叫成Music IC)两... 点击进入详情页
本回答由唯创智能提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式