VC技术内幕大揭密!

laoyiin 2003-06-02 04:07:18
#include <stdio.h>
#include <iostream.h>

void main()
{
cout << " hello 123\n" ;
printf("hihihihi\n");
}
上面这段程序的输出结果是:
hihihihi
hello 123
而不是想要的:
hello 123
hihihihi
请问为什么是这种结果?
...全文
65 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨星 2003-06-02
  • 打赏
  • 举报
回复
不是bug,cout比pritnf多了一层缓冲。
在多线程程序设计中也有这个问题,pritnf是天生线程互斥的,而如果使用cout就要设置CriticalSection,否则屏幕的输出就会一团糟。
laoyiin 2003-06-02
  • 打赏
  • 举报
回复
thank you .
hiys 2003-06-02
  • 打赏
  • 举报
回复
高手!
delphihero 2003-06-02
  • 打赏
  • 举报
回复
不是 bug , cout 有缓冲的,除非调用 cout.flush() 或者 <<endl 强制立即执行。
atma 2003-06-02
  • 打赏
  • 举报
回复
不要使用<iostream.h>,这是C语言库的头文件。标准C++对这些头文件已经不支持了,所以可能出现意想不到的情况。使用<iostream>就可以了
treamboy 2003-06-02
  • 打赏
  • 举报
回复
可惜我也是用bcb編譯器,不過在vc中出現這種結果不為奇,畢竟vc編譯器對標準c++做了一些編譯技術上的優化.真的如此也不應該算bug.
laoyiin 2003-06-02
  • 打赏
  • 举报
回复
是VC的BUG吗?
希望高人指点。
laoyiin 2003-06-02
  • 打赏
  • 举报
回复
如果改为:
cout << "hello 123" << endl;
则,能够获得想要的结果。
2bno1 2003-06-02
  • 打赏
  • 举报
回复
呵呵,确实很奇怪,我查看了编译后的汇编代码,也是先执行cout再执行printf啊,
为什么输出结果却颠倒了呢。忘楼下的指点!
蝎子i软件 2003-06-02
  • 打赏
  • 举报
回复
Borland C++ 5.5没有这个问题,
输出是意料中的
hello 123
hihihihi

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧