基础:COUT输出顺序
来源:优易学  2011-11-22 10:51:23   【优易学:中国教育考试门户网】   资料下载   IT书店
  代码1:
  #include <iostream> //程序片段1
  using namespace std;
  int f(int a)
  {
  auto int b=0; //auto可以省略
  static int c=3;
  b+=1;
  c+=1;
  return a+b+c;
  }
  int main()
  {
  int a=2;
  for(int i=0;i<3;i++)
  cout<<f(a)<<" ";
  cout<<f(a)<<" "<<f(a)<<" "<<f(a)<<endl;
  return 0;
  }
  结果:7 8 9
  代码2:
  #include <iostream>//程序片段2
  using namespace std;
  int f(int a)
  {
  auto int b=0; //auto可以省略
  static int c=3;
  b+=1;
  c+=1;
  return a+b+c;
  }
  int main()
  {
  int a=2;
  cout<<f(a)<<" "<<f(a)<<" "<<f(a)<<endl;
  return 0;
  }
  结果:9 8 7
  解析:
  cout的输出是先从右往左读入缓冲区,再从左往右输出;
  假设a = 1; b = 2; c = 3;
  cout<<a<<b<<c<<endl;
  缓冲区:|3|2|1|<- (把“<-”看作是指针)
  输出:|3|2|<- (输出 1)
  |3|<- (输出 2)
  |<- (输出 3)
  你的f(a)是直接就是在缓冲区的:|7|8|9|,所以cout直接从缓冲区读出数据
  输出<-
  缓冲区相当于堆栈的效果。。。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训