黑马程序员技术交流社区

标题: 定义位置不同,导致输出的结果也不相同吗? [打印本页]

作者: 斑马    时间: 2014-6-3 09:23
标题: 定义位置不同,导致输出的结果也不相同吗?
本帖最后由 斑马 于 2014-6-3 11:23 编辑

正确代码:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a,b,sum;
  5.     printf("请输入a和b的值,以空格分开,输入完毕后按回车键继续\n");
  6.     scanf("%d %d",&a,&b);
  7.     sum = a + b;
  8.     printf("%d和%d的和是%d\n",a,b,sum);
  9.     return 0;
  10. }
复制代码

运行结果:


错误代码:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a,b,sum;
  5.     sum = a + b;
  6.     printf("请输入a和b的值,以空格分开,输入完毕后按回车键继续\n");
  7.     scanf("%d %d",&a,&b);
  8.     printf("%d和%d的和是%d\n",a,b,sum);
  9.     return 0;
  10. }
复制代码

运行结果:


请问,为什么会这样呢?

作者: ★Joean_Zhou    时间: 2014-6-3 10:30
你把sum = a+b;定义在前面都没有赋值就开始加了,所以是乱码;应该先赋初值吧应该,我觉得。。。。嘿嘿
作者: m573555543    时间: 2014-6-3 10:56
这个牵扯到了变量的使用注意

变量的使用注意是:当变量没有被初始化(也就是赋值)的时候,这个时候使用变量会产生垃圾数据(也就是一堆乱码)。

楼主现在就是:
只定义了三个变量,没有给变量进行初始化。
因为main函数是顺序结构,是从上往下走代码。所以现在的程序会出现乱码。
作者: 斑马    时间: 2014-6-3 11:21
★Joean_Zhou 发表于 2014-6-3 10:30
你把sum = a+b;定义在前面都没有赋值就开始加了,所以是乱码;应该先赋初值吧应该,我觉得。。。。嘿嘿 ...

你说的也有道理
作者: 斑马    时间: 2014-6-3 11:22
m573555543 发表于 2014-6-3 10:56
这个牵扯到了变量的使用注意

变量的使用注意是:当变量没有被初始化(也就是赋值)的时候,这个时候使用变 ...

这样啊,明白啦。。谢谢大神!
作者: 傘が咲く    时间: 2014-6-3 15:24
是的,局部变量是不会自动初始化的,初始化之前访问,肯定会访问到垃圾数据。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2