首页 理论教育 printf函数与cout函数输出缓冲区的不同

printf函数与cout函数输出缓冲区的不同

时间:2023-11-20 理论教育 版权反馈
【摘要】:cout执行输出操作后,数据并非立刻传到输出设备,而是先进入一个缓冲区,等时机适当时再由缓冲区传入,而printf函数是直接打印到屏幕上,举例如下:与表面上看,这两条语句都是在屏幕上打印“我看C语言”并且换行,但是这两句话是有区别的:1)<<endl相当于<<"\n"<<flush,flush就是将缓冲区的内容强制写到屏幕上。

printf函数与cout函数输出缓冲区的不同

printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中,调用格式为:

978-7-111-49552-9-Chapter03-51.jpg

978-7-111-49552-9-Chapter03-52.jpg

图3-15 直接响应命令

978-7-111-49552-9-Chapter03-53.jpg

图3-16 回车符滞留问题

函数可以简单地理解为由输入到输出的一系列运算或操作(如把结果显示到屏幕上)。程序中的cout虽然看起来像C语言的关键字,但它并不是一个关键字。cout是一个iostream类的对象,它有一个成员运算符函数operator<<,调用时会向输出设备输出,它的本质还是函数(类和运算符重载将在C++课程学习,这里可以简单地把类理解成包含,把运算符重载理解成重新定义了一个运算符<<),因此:

978-7-111-49552-9-Chapter03-54.jpg

相当于:

978-7-111-49552-9-Chapter03-55.jpg

或更简洁:(www.xing528.com)

978-7-111-49552-9-Chapter03-56.jpg

这里可以连起来写的原因是cout.operator<<()函数的返回值是它自己,所以可以连续调用。

此外,使用printf函数进行显示需要用%d、%f说明格式来指定数据类型,而cout却不用,这是因为函数cout.operator<<()使用了函数重载技术(在C++课程中讲解,这里可以简单地理解为C语言能够自己根据输入的数据类型自动进行相应的处理)。

cout执行输出操作后,数据并非立刻传到输出设备,而是先进入一个缓冲区,等时机适当时(如设备空闲)再由缓冲区传入,而printf函数是直接打印到屏幕上,举例如下:

978-7-111-49552-9-Chapter03-57.jpg

978-7-111-49552-9-Chapter03-58.jpg

表面上看,这两条语句都是在屏幕上打印“我看C语言”并且换行,但是这两句话是有区别的:

1)<<endl相当于<<"\n"<<flush,flush就是将缓冲区的内容强制写到屏幕上。

2)flush、endl都叫cout操纵符(还有其他操纵符,用时再另行介绍)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈