【发布时间】:2012-12-02 07:44:59
【问题描述】:
我使用的是 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 吗?
【问题讨论】:
-
sync_with_stdio能解决问题吗?我从来没用过。 -
@CaptainMurphy:不,不是。混合宽窄的语义是未指定的,而上述代码的语义是明确定义的,它必须打印“abc”,除非调用
sync_with_stdio(false),这不会发生在这里。基本上 MSVC6 不符合标准...