A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 雪寒 中级黑马   /  2014-11-3 15:22  /  2464 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

以前学习的时候,好像int型的变量,在未赋初值的时候,i 的值默认为0,但是在C编程的时候,却不是这样
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         int i;
  5.         i=i+1;
  6.         printf("%d",i);
  7.         return 0;
  8. }
复制代码

运行的结果是:-858993459

这是怎么回事呢?


评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

16 个回复

倒序浏览
变量i没有初始化,就使用
回复 使用道具 举报
枫叶路过123 发表于 2014-11-3 15:28
变量i没有初始化,就使用

嗯,这个我知道,int型应该有默认值0

我这样写就没错

  1. #include <stdio.h>
  2. int i;
  3. int main()
  4. {       
  5.     i=i+1;
  6.     printf("%d",i);
  7. }
复制代码
回复 使用道具 举报
在C语言中,变量未经初始化,默认值并不是0。在应用变量之前,一定要进行初始化。
回复 使用道具 举报
冯立柱 发表于 2014-11-3 15:48
在C语言中,变量未经初始化,默认值并不是0。在应用变量之前,一定要进行初始化。 ...

可是,如果把它定义为全局变量,就可以,int型默认值为0,运算结果也是正确的
回复 使用道具 举报
没有初始化的话,变量所在内存空间的内容是没有改变的,以前存的什么就是什么,所以可能什么古怪的东西都会被打印出来。这个更体现了初始化的重要性。自己初始化一下才比较放心。
回复 使用道具 举报
雪寒 发表于 2014-11-3 15:58
可是,如果把它定义为全局变量,就可以,int型默认值为0,运算结果也是正确的 ...

不好意思,没说清楚,回答太片面了。确实,在变量定义为全局变量时,C语言给定义为默认初始值为0,我之前说的只适用于局部变量。
回复 使用道具 举报
雪寒 中级黑马 2014-11-3 16:11:11
8#
冯立柱 发表于 2014-11-3 16:08
不好意思,没说清楚,回答太片面了。确实,在变量定义为全局变量时,C语言给定义为默认初始值为0,我之前 ...

嗯,我也是后来才发现的。。。
回复 使用道具 举报
雪寒 中级黑马 2014-11-3 16:13:34
9#
银河雨 发表于 2014-11-3 16:07
没有初始化的话,变量所在内存空间的内容是没有改变的,以前存的什么就是什么,所以可能什么古怪的东西都会 ...

嗯,如果是全局变量,就有了默认值。。。
回复 使用道具 举报
雪寒 发表于 2014-11-3 16:13
嗯,如果是全局变量,就有了默认值。。。

是的。而且一般局部变量用得比较多。
回复 使用道具 举报
雪寒 发表于 2014-11-3 16:13
嗯,如果是全局变量,就有了默认值。。。

是的。而且一般局部变量用得比较多。
回复 使用道具 举报
还是初始化后再用吧
回复 使用道具 举报
在c语言中,变量使用之前需要进行初始化,将内存中得垃圾数据清空,这样就不会取到垃圾数据了。
回复 使用道具 举报
初始化  在使用   要不就定义成全局变量
回复 使用道具 举报
最好就是在使用变量之前先初始化。。
回复 使用道具 举报
轮回 发表于 2014-11-4 12:33
在c语言中,变量使用之前需要进行初始化,将内存中得垃圾数据清空,这样就不会取到垃圾数据了。
...

有道理……
回复 使用道具 举报
原来还会这样的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马