cout和printf不能混用

Posted shihuvini

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cout和printf不能混用相关的知识,希望对你有一定的参考价值。

1、两者的缓存机制不同:printf无缓冲区,而std::cout有 (其实printf也是有缓冲区的,https://blog.csdn.net/ithzhang/article/details/6875176)

2、对于标准输出的加锁时机不同:printf在对标准输出作任何处理前先加锁;std::out在实际向标准输出打印时才加锁

3、二者存在微弱的时序差别,而在多线程环境下,很多问题就是由于微弱的时序差别造成的。所以两者混用很容易带来不可预知的错误,常见的错误有打印输出的结果不符合预期,而严重错误时甚至会导致内部缓冲区溢出,导致crash。

以上是关于cout和printf不能混用的主要内容,如果未能解决你的问题,请参考以下文章

为啥 printf() 可以在内核中工作,但使用 std::cout 不能?

printf(" ")和cout<<两个输出有啥区别?

求C语言和C++大神解答,printf怎么转成cout输出语句

acm小技巧

C++中cin,cout是否效率不如scanf,printf

在cin / cout和scanf / printf期间在C ++中保存float和double precision