CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

windows server 2003+ vc 6.0 vs 局部变量和全局变量

楼主lclvcstudy(ddddd)2005-05-19 14:05:50 在 C/C++ / C++ 语言 提问

这是我写的一个程序,运行环境如上所述  
  #include   "iostream.h"  
  void   func1();  
  int   n   =   1;     //全局变量  
  int   main()  
  {  
  static   int   a;  
  int   b=-10;  
  cout<<"global,static   variable\n"<<endl;  
  cout<<"a:"<<a<<"b:"<<b<<"n:"<<n<<endl;  
  b+=4;  
  func1();  
  cout<<"a:"<<a<<"b:"<<b<<"n:"<<n<<endl;  
  n+=10;  
  func1();  
  return   0;  
  }  
   
  void   func1()  
  {  
  static   int   a   =   2;       //静态局部变量  
  int   b   =   5;                     //局部变量  
  a   +=   2;  
  b   +=   5;  
  n   =   n   +   12;  
  cout<<"a:"<<a<<"b:"<<b<<"n:"<<n<<endl;  
  }  
  编译后输出如下:  
  a:0   b:37777777766   n:1  
  a:4   b:12   n:15  
  a:0   b:37777777772   n:15  
  a:6   b:12   n:43  
  你们看看b和n对吗?是不对的吧,可是为什么呀,程序应该没有问题,难道是编译器有问题?  
  请高手指点! 问题点数:20、回复次数:9Top

1 楼sunman1982(冥王星)回复于 2005-05-19 14:15:10 得分 10

在dev上运行正常……Top

2 楼sunman1982(冥王星)回复于 2005-05-19 14:17:29 得分 0

windows2000+vc6     正常Top

3 楼sunman1982(冥王星)回复于 2005-05-19 14:18:07 得分 0

a:0b:-10n:1  
  a:4b:10n:13  
  a:0b:-6n:13  
  a:6b:10n:35  
  Press   any   key   to   continueTop

4 楼lclvcstudy(ddddd)回复于 2005-05-19 14:19:53 得分 0

这个我知道,但是在windows   server   2003   企业版就是我上面的结果,为什么呢?Top

5 楼lclvcstudy(ddddd)回复于 2005-05-19 14:21:02 得分 0

难道是windows版本升级了,不兼容vc6.0,只支持vs2003?Top

6 楼thunderclap(认识事物都有两面性)回复于 2005-05-19 16:09:22 得分 10

windows   server   2003   +   vs2003正常Top

7 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-05-19 17:05:33 得分 0

还真是编译器不支持?Top

8 楼lclvcstudy(ddddd)回复于 2005-05-19 17:06:05 得分 0

我刚才又调试了一下,发现加上using   namespace   std可以正常通过  
  但是我又发现了下面的这个问题:请回答  
   
  #include   "iostream.h"  
  void   func1();  
  int   n   =   1;     //全局变量  
  int   main()  
  {  
                    int   number   =   1001;  
  static   int   a;  
                                        cout<<"\nC++   is   Fun!!!"<<endl  
    <<"Decimal:"<<dec<<number<<endl  
    <<"Hexadecimal:"<<hex<<number<<endl  
    <<"Octal:"<<oct<<number<<"\n"<<endl;  
  int   b=-10;  
  cout<<"global,static   variable\n"<<endl;  
  cout<<"a:"<<a<<"b:"<<b<<"n:"<<n<<endl;  
  b+=4;  
  func1();  
  cout<<"a:"<<a<<"b:"<<b<<"n:"<<n<<endl;  
  n+=10;  
  func1();  
  return   0;  
  }  
   
  void   func1()  
  {  
  static   int   a   =   2;       //静态局部变量  
  int   b   =   5;                     //局部变量  
  a   +=   2;  
  b   +=   5;  
  n   =   n   +   12;  
  cout<<"a:"<<a<<"b:"<<b<<"n:"<<n<<endl;  
  }  
  编译后输出如下:  
  a:0   b:37777777766   n:1  
  a:4   b:12   n:15  
  a:0   b:37777777772   n:15  
  a:6   b:12   n:43  
  这时候在windows   server   2003中不论是vs2003还是vc6.0都是上述结果,如果把输出十六进制和  
  八进制的两个语句去掉或者放在程序的最后输出,那么就是正确的。  
    请高手指点!  
   
  Top

9 楼lclvcstudy(ddddd)回复于 2005-05-20 10:27:09 得分 0

我知道了,研究出来了,是因为八进制一旦在输出流里有效,那么以后都默认有效。所以后面要是再输出其他进制的数就要再次进行设置。好了可以结贴了。呵呵,把分数给谁呢?Top

相关问题

  • 全局变量和静态局部变量有什么区别?
  • 局部变量和全局变量的问题
  • 】】】全局变量与局部变量的疑惑!!!【【【
  • 关于全局变量,main()中局部变量与函数参数的问题
  • 如何在函数中访问被局部变量覆盖的全局变量
  • 关于全局变量和局部变量初试值的问题
  • VC爱好者进来,讨论一个局部变量与全局变量如果同名,c 语言是如何调用问题
  • 关于局部变量!!!
  • 局部变量与栈
  • 全局变量、静态变量、局部变量各存在内存的什么区域呀

关键词

  • 全局变量

得分解答快速导航

  • 帖主:lclvcstudy
  • sunman1982
  • thunderclap

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo