1、兩者的緩存機制不同:printf無緩沖區,而std::cout有 (其實printf也是有緩沖區的,https://blog.csdn.net/ithzhang/article/details/6875176)
2、對於標准輸出的加鎖時機不同:printf在對標准輸出作任何處理前先加鎖;std::out在實際向標准輸出打印時才加鎖
3、二者存在微弱的時序差別,而在多線程環境下,很多問題就是由於微弱的時序差別造成的。所以兩者混用很容易帶來不可預知的錯誤,常見的錯誤有打印輸出的結果不符合預期,而嚴重錯誤時甚至會導致內部緩沖區溢出,導致crash。