我正在使用Microsoft Visual Studio 6.0。
以下计划
#include "stdafx.h"
#include "iostream.h"
int main(int argc, char* argv[])
{
printf("a");
printf("b");
printf("c");
return 0;
}
产生“abc”。
以下程序,
#include "stdafx.h"
#include "iostream.h"
int main(int argc, char* argv[])
{
printf("a");
cout<<"b";
printf("c");
return 0;
}
产生“acb”。
有什么问题?我不能在同一个程序中混合使用cout和printf吗?
答案 0 :(得分:5)
标准说:
当标准iostream对象
插入字符str
与标准同步时 stdio streamf
,通过c
的效果fputc(f, c);
与
的效果相同str.rdbuf()->sputc(c);
任何字符序列;
默认情况下,除非您调用sync_with_stdio(false)
,否则cout
会与stdout
同步。因此,您的第二个代码段相当于:
printf("a");
fputc(stdout, 'b')
printf("c");
即使你的实施也必须产生“abc”。
底线:MSVC6不符合标准,因为它已经很老了,这并不奇怪。