首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

【郁闷】搞不明白的TC与VC!该如何处理

2012-03-03 
【郁闷】搞不明白的TC与VC!程序是按照顺序原则执行的可是。。。。。看这段程序#includeiostream.h #includestd

【郁闷】搞不明白的TC与VC!
程序是按照顺序原则执行的可是。。。。。
看这段程序

#include   "iostream.h "
#include   "stdio.h "
void   main()
{
cout < < "number ";
printf( "1234 ");
}
其执行结果本来应该是;
number1234

在TC上的执行的结果的确是这样的

可是在VC上却是
1234number
执行顺序怎么颠倒过来了
程序必须改成
#include   "iostream.h "
#include   "stdio.h "
void   main()
{
cout < < "number " < <endl;     //要在这里加上endl才行。
printf( "1234 ");
}
在VC中执行结果才是
1234number

这是为什么啊?
搞不明白所以想请教一下大家,
为什么在TC中顺序就是正确的但在VC中却是颠倒的呢?
为什么加上endl顺序就对了呢?

[解决办法]
缓冲就是收集但不立刻执行。比如你输出5个字符,但是它不立刻执行,它可能会等凑齐了100个字符再一起输出,因为这样效率更高。所以字符的实际输出时间和你的请求之间有时间差,如果你有两套缓冲,可能就会有一点混乱。


[解决办法]
缓冲区的问题,在VC中printf的缓冲区在cout的缓冲区清空之前清空,所以,printf的内容就跑到前面去了。
但到底那个缓冲先清空往往和编译器以及缓冲区中的内容的多少有关。
缓冲区是满了或者程序结束时才清空。
[解决办法]
#include <iostream>
#include <stdio.h>

using namespace std;
void main()
{
cout < < "number ";
printf( "1234 ");
}
这样就没有问题了
[解决办法]
什么啊~!·#¥%
去看C++ PRIMER
程序在执行的时候不是直接输出到DOC—下的,而是寄存在缓冲区中
当你用ENDL 时 它会刷新缓冲区(即把缓冲区中的东西输出到DOC下)
(ARE YOU OK~!·#¥%……—*)

热点排行