C/C++语言中为什么printf()会比cout()先输出,看下例

#include <iostream.h>
#include <stdio.h>
void main()
{
cout<<"haha\n"
printf("maimaimai\n");
}
//结果是:
//maimaimai
//haha

类似的还有
void main()
{
cout<<"mai";
system("pause");
}
先提示"按任意键继续..."
后输出mai

最好不要混用,因为cout流的维护比printf要高一层,cout要到回车或流刷新时才会输出。
而且ios::sync_with_stdio()决定了iostream是否和stdio同步,C++标准中规定stdio sync标志默认是true,但是有的平台下可能不会支持,或实现有差异。如果stdio sync是false的话,就可能出现输出顺序不对的情况。下列代码就是输出bbbaaa:
C/C++ code
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cout << "aaa";
printf("bbb");
return 0;
}

所以没有特殊要求,请不要混用iostream和stdio。
尤其是如果你的程序使用unicode编程的话,要在控制台输出要用wcout或者wprintf并设置本地编码。这两种输出方式设置编码的方式是不同的,而且无法兼容,一个设置对了,另外一个就不能正常工作了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-03
我这里没出现这种情况
第2个回答  2012-02-03
两种语言输出数据的方式是不一样的
C++好像是数据流
C语言我就忘了
第3个回答  2012-02-03
是不是编译器的问题。 重新全部编译运行。
第4个回答  2012-02-03
很多地方大意了:丢字、大小写失误、
第5个回答  2012-02-05
这个应该是编译器的问题吧,同时建议再检查一下程序。。。。
相似回答