CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

这个怎么这样输出?为什么 ?

楼主AKing2008(AINTO)2003-08-01 09:50:39 在 C/C++ / C语言 提问

#include   <iostream.h>  
  void   main()  
  {int   n;  
  int   array[5]={2};  
  for(n=0;n<5;n++)  
  cout<<""<<array[n];  
  cout<<endl;  
  }  
   
  结果:  
  2   23567   23567   23567   23567  
   
  实在不明白。哪里来的23567。请大家解释解释!  
  问题点数:0、回复次数:10Top

1 楼wh_xiexing(谢兴)回复于 2003-08-01 09:59:07 得分 0

int     array[5]   =   {2}   ;  
  这个语句只对第一个数组元素赋值,  
  应该改为     int   array[5]   =   {5,5,5,5,5};Top

2 楼Icat(晨)回复于 2003-08-01 10:38:25 得分 0

你的array没有初始化Top

3 楼yangsiqun(灌水是我有声的抗议)回复于 2003-08-01 10:53:22 得分 0

恩?不是啊,我在VC6下运行没问题啊,而且int     array[5]   =   {2}   ;  
  这个语句并不是只对第一个数组元素赋值,而是把其他的变量默认的初始化为0,  
  因此输出是:20000!  
  Top

4 楼Icat(晨)回复于 2003-08-01 11:53:55 得分 0

只是给第一个元素赋值了Top

5 楼winespirit(酒鬼)回复于 2003-08-01 12:02:10 得分 0

妈的!你给Microsoft害了是不是?在标准C/C++中,声明但未初始化的变量的值是随机的,不定的,所以,你的结果是正常的。Top

6 楼steedhorse(晨星)回复于 2003-08-01 12:43:56 得分 0

VC6中好像也只是DEBUG版本才做初始化吧?那是为了方便调试。  
  所以,如果不养成好的编程习惯,经常就会发生Debug版本好用而Release版本不好用这类问题。Top

7 楼Icat(晨)回复于 2003-08-01 15:20:54 得分 0

同意steedhorse(晨星)    
  好习惯最好早养成,  
  到后来就好多了  
  Top

8 楼AKing2008(AINTO)回复于 2003-08-02 10:13:56 得分 0

to   winespirit(酒鬼)    
  你的意思是每次的结果都不同吗?  
  能说说为什么只声明但不初始化就会随机吗?是一种规则还是因为什么呢?Top

9 楼johnson_sun()回复于 2003-08-02 10:47:48 得分 0

................昏死  
  真的是一代不如一代  
  老兄  
  放下你的VC  
  去找个turbo   c来练习你的C语言功底Top

10 楼steedhorse(晨星)回复于 2003-08-02 18:19:30 得分 0

“能说说为什么只声明但不初始化就会随机吗?是一种规则还是因为什么呢?”  
  定义一个变量在函数被调用时事实上就是预留一块内存来保存这个变量的值,如果你不亲自去初始化,难道它自己还会自动初始化?  
   
  有些语言是有自动初始化的功能,但那是以牺牲效率为代价的。C语言认为,定义就是定义,是否要初始化应该看程序员的习惯,而不应该对每一个定义都自动附加上一个初始化的操作(因为那至少需要一条机器指令),既然没有初始化,那么这个内存单元里原来的值是什么当然就很难说了。所以,不是因为什么规则,而恰恰是因为“没有规则”。  
   
  内存在物理上就是一块内存条,在机器运行时,它并不知道自己那个单元被分配了,那个单元没被分配,除非你改写它,否则,它不可能随着系统的运行而不断地“自动”初始化。Top

相关问题

  • 为什么输出是这样的?
  • 为什么是这样的输出呢?
  • &为什么不能输出,看这代码怎么写才对?
  • 属性化的VS.net ATL项目怎么输出CLSID?为什么…
  • 这样输出的怎么不是57???????????????????
  • 这样的输出显示怎么写?
  • 不理解,为什么输出会是这样的;
  • 这段代码为什么会这样输出?
  • 为什么我的GetDateTime的输出是这样的??
  • 为什么输出的文本格式是这样的呢??

关键词

得分解答快速导航

  • 帖主:AKing2008

相关链接

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

广告也精彩

反馈

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