请问C语言高手:::

#include"stdio.h"main(){inta=3,b=2,c=1;c-=++b;b*=a+c;{intb=5,c=12;c/=b*2;a-=c;printf(... #include"stdio.h"
main()
{ int a=3,b=2,c=1;
c-=++b;b*=a+c;
{int b=5,c=12;
c/=b*2;a-=c; printf("%d,%d,%d,",a,b,c);
a+=--c;
}
printf("%d,%d,%d\n",a,b,c);
}
为什么输出结果是2,5,1,2,3,-2?谢谢!
展开
 我来答
水冬灵05K
2012-09-15 · 超过12用户采纳过TA的回答
知道答主
回答量:69
采纳率:25%
帮助的人:25.8万
展开全部
{
int b=5,c=12;
c/=b*2;a-=c; printf("%d,%d,%d,",a,b,c);
a+=--c;//相当于a = a+(--c) = 2
}
这一段代码,重新定了两个局部变量b和c,初始值为b=5,c=12,所以第一条printf打印的是2,5,1计算方法楼上已给出,这里不做解释。这里的b,c是局部变量,只能在{}的范围内使用。而a是全局变量,在整个程序中都能使用,在以上代码执行完以后其值为2.
而后一个printf语句打印的是全局变量a,b,c的值,即
int a=3,b=2,c=1;
c-=++b;b*=a+c;
执行以后b = 3,c =-2,a为{}内的代码执行后的值,a = 2;
所以后一条打印语句打印的是2,3,-2
本程序主要要理解局部和全局变量的区别及其存在范围,在理解之后楼主再看这个程序就不会觉得困惑了
追问
呵呵!一看就是专业的啊!写了这么仔细!真是难为你了!
可是我还有一个小问题,想要请教一下:“
a+=--c;

”此时的C已经是1了,再自减一个不就是零了吗?为什么会减一个,结果是a为2?
追答
a += --c;实质上可以看作:a = a + (--c);也就是把a + 0赋值给a,仍为2
匿名用户
2012-09-15
展开全部
c/=b*2 ---------c=c/(b*2)-----c=12/10-------c=1("/"取商的意思)
a-=c-------a=a-c----a=3-1------a=2
b没有计算,所以b的值不变
(这个题我只会解释一半,下面那个输出不知道是为什么了)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式