| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1521 人关注过本帖
标题:关于C程序的先后顺序
只看楼主 加入收藏
starzq00123
Rank: 1
等 级:新手上路
帖 子:20
专家分:3
注 册:2012-7-20
收藏
 问题点数:0 回复次数:9 
关于C程序的先后顺序
#include <stdio.h>
void main()
{int a,b,c;
c=a+b;
scanf("%d+%d",&a,&b);
printf("a+b=%d\n",c);
输入4+9 结果是-1717986920
#include <stdio.h>
void main()
{int a,b,c;
scanf("%d+%d",&a,&b);
c=a+b;
printf("a+b=%d\n",c);
}
输入4+9结果却是 13
对于第一个结果表示不理解 不知道怎么来的 c=a+b与scanf的顺序影响到了结果了么? 在以后怎么知道什么时候用scanf呢
搜索更多相关主题的帖子: include 影响 
2012-07-25 14:23
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你还是弄本纸质书看吧,光看视频是学不到东西的。

授人以渔,不授人以鱼。
2012-07-25 14:24
starzq00123
Rank: 1
等 级:新手上路
帖 子:20
专家分:3
注 册:2012-7-20
收藏
得分:0 
我手里只有本 应付计算机2级考试的书 感觉里面的东西都比较抽象 不好看懂。能不能推荐本书,我看的视频是谭浩强第三版 c语言程序设计的讲义
2012-07-25 14:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
考试书也有讲变量使用之前应该先初始化的呀。程序执行顺序按代码书写顺序,这是顺序语句部分讲过的知识点,你定义了a,b,c,然后就执行加法运算,这时都还没执行到scanf()输入数据部分,当然是随机值了。

那本书也是够的,只是你没有静下心来啃罢了。

授人以渔,不授人以鱼。
2012-07-25 14:32
LShang
Rank: 4
来 自:China
等 级:业余侠客
威 望:3
帖 子:183
专家分:258
注 册:2010-12-24
收藏
得分:0 
这跟先后顺序有啥关系。。。
变量使用前先要初始化是常识啊
楼主拿的是两个垃圾数据在做加法,得不到结果是一定的。
楼主就算要看老谭的书,也弄个实体或者PDF看吧。。。
送几本电子书
http://www.
http://(第五版)中文版.pdf
http://[C程序设计(第四版)].谭浩强.pdf
http://专家编程.pdf
完全没接触过编程的话,找个视频看也是不错的,但是要慎重选择,找到的视频要教你如何去编程而不是如何使用语言,有了逻辑之后学语言就会快一些了

学如逆水行舟,不进则退
士不可以不弘毅,任重而道远
2012-07-25 14:43
honter
Rank: 2
等 级:论坛游民
帖 子:5
专家分:13
注 册:2011-11-30
收藏
得分:0 
上面的scanf后有没有给C复制,printf时输出的C当然还是之前的C的值了,因为未初始化了,所以产生的数字都是随机的
2012-07-25 16:36
zjy83350535
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2012-7-24
收藏
得分:0 
谭浩强的书新手不适合看
2012-07-25 17:06
我乃新手
Rank: 2
等 级:论坛游民
帖 子:52
专家分:73
注 册:2012-7-23
收藏
得分:0 
产生的随机数哦...............
2012-07-26 13:26
lisjdf
Rank: 1
等 级:新手上路
帖 子:12
专家分:6
注 册:2012-7-26
收藏
得分:0 
以下是引用starzq00123在2012-7-25 14:23:12的发言:

#include
void main()
{int a,b,c;
c=a+b;
scanf("%d+%d",&a,&b);
printf("a+b=%d\n",c);
输入4+9 结果是-1717986920
#include
void main()
{int a,b,c;
scanf("%d+%d",&a,&b);
c=a+b;
printf("a+b=%d\n",c);
}
输入4+9结果却是 13
对于第一个结果表示不理解 不知道怎么来的 c=a+b与scanf的顺序影响到了结果了么? 在以后怎么知道什么时候用scanf呢
C语言执行顺序是从main函数开始从上到下遇到调用函数采取调用后返回原main函数依次进行的。
 楼主写的第一个#include
void main()
{int a,b,c;
c=a+b;
scanf("%d+%d",&a,&b);
printf("a+b=%d\n",c);
执行顺序:
首先 开辟内存单元a,b,c(这时候a,b,c还没有被赋值所以会被计算机随机赋予一个数,这个赋值不同的运行环境会产生不同的随机数)
第二 执行c=a+b;也就是吧随机产生的a,b两个数赋值给c;
第三 执行scanf("%d+%d",&a,&b);为a,b重新赋值;
第四 printf("a+b=%d\n",c);输出c(因为c的二次赋值既c=a+b是在a,b为随机数状态下进行的,所以c会是随机数和而不是a,b二次赋确定值的和)
2012-07-27 09:34
a7882669
Rank: 4
等 级:业余侠客
帖 子:192
专家分:290
注 册:2012-4-17
收藏
得分:0 
我觉得嘛,楼主还是认真看下书吧,逻辑顺序神马的都不太懂哟,貌似
2012-07-27 10:04
快速回复:关于C程序的先后顺序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024206 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved