• 关于 阻塞赋值可以干啥 的搜索结果

回答

确实跟缓冲区有关, getch每次调用,从标准输入缓冲区中读入1个字符,但如果缓冲区中没有数据,则会阻塞程序,等待直到缓冲区里有数据。 那么什么时候有数据呢? -- 当你按回车的时候,之前键入的所有字符,包含回车自身,一并被送入输入缓冲区 所以,当缓冲区为空时,无论你输入多少个字符,只要不按回车,getch()函数会一直等在那里。 第一个程序,输入asxsas回车后,getch()获取到第一个字符a,之后的字符还在缓冲区内,当程序退出时,缓冲区销毁,里面的数据也随之消失。 第二个程序可以自己体会下。 第三个程序,翻译一下 每当( (从缓冲区读一个字符) 不等于 '#' ) 执行 { 啥也不干,继续循环 }只有当读到#的时候,才因不满足循环条件而跳出,继续执行下面的putchar,当然 此时打印出的就是 # getchar返回int类型这个是API里定义的规范,但是你可以将它赋值给一个char类型的变量,这里会自动做int -> char的隐式类型转换,这个转换,会丢失高位字节,但是对于getch()返回的数据来说,他的范围是0-127,高位字节永远都是0,丢了也无所谓

a123456678 2019-12-02 02:39:10 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 SQL审核 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 人工智能 阿里云云栖号 云栖号案例 云栖号直播