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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 斑马 于 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. }
复制代码

运行结果:


请问,为什么会这样呢?

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

6 个回复

倒序浏览
你把sum = a+b;定义在前面都没有赋值就开始加了,所以是乱码;应该先赋初值吧应该,我觉得。。。。嘿嘿

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
这个牵扯到了变量的使用注意

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

楼主现在就是:
只定义了三个变量,没有给变量进行初始化。
因为main函数是顺序结构,是从上往下走代码。所以现在的程序会出现乱码。

点评

比较详细  发表于 2014-6-3 15:26

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
★Joean_Zhou 发表于 2014-6-3 10:30
你把sum = a+b;定义在前面都没有赋值就开始加了,所以是乱码;应该先赋初值吧应该,我觉得。。。。嘿嘿 ...

你说的也有道理
回复 使用道具 举报
m573555543 发表于 2014-6-3 10:56
这个牵扯到了变量的使用注意

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

这样啊,明白啦。。谢谢大神!
回复 使用道具 举报
是的,局部变量是不会自动初始化的,初始化之前访问,肯定会访问到垃圾数据。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马