C语言,求答案和解析
3个回答
展开全部
有两个a 一个是全局变量 一个是局部变量
在main 内部的大括号里面是局部变量 其它地方是全局变量。 这两个a不同。
程序运行时。
初始 s=0
进入大括号 这里是局部变量a 为5。 执行s+=a++; s=0+5=5
之后a自加为6. 但不影响全局变量a
出来 执行s+=a++;
这里是全局变量a值为3
于是s=5+3=8
a自加为4
输出s值为8
在main 内部的大括号里面是局部变量 其它地方是全局变量。 这两个a不同。
程序运行时。
初始 s=0
进入大括号 这里是局部变量a 为5。 执行s+=a++; s=0+5=5
之后a自加为6. 但不影响全局变量a
出来 执行s+=a++;
这里是全局变量a值为3
于是s=5+3=8
a自加为4
输出s值为8
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案:8
解析:第一个s+=a++; a的值是5,此处a是局部变量int a=5;的那个a,语句s+=a++; 你可以认为对s的影响只有s+=a;所以s的结果就是s=s+a=0+5=5;
第二个s+=a++; 此处的a是#include<stdio.h>后面定义的那个int a=3;这个全局变量,所以a=3;注意上面的局部变脸int a=5;已经超过了它的作用范围,所以下面的a是全局变量,即a=3; 同理第二个s+=a++;对s的影响只有s+=a;所以s的结果就是s=s+a=5+3=8;
解析:第一个s+=a++; a的值是5,此处a是局部变量int a=5;的那个a,语句s+=a++; 你可以认为对s的影响只有s+=a;所以s的结果就是s=s+a=0+5=5;
第二个s+=a++; 此处的a是#include<stdio.h>后面定义的那个int a=3;这个全局变量,所以a=3;注意上面的局部变脸int a=5;已经超过了它的作用范围,所以下面的a是全局变量,即a=3; 同理第二个s+=a++;对s的影响只有s+=a;所以s的结果就是s=s+a=5+3=8;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
{
int a=5;
s+=a++;
}
局部变量覆盖全局变量 因此 s=5;但是在这段代码之后局部变量a就销毁了
下一行s+=a++的a就是全局变量a=3
s=8,此时全局变量a=4;
答案选A
int a=5;
s+=a++;
}
局部变量覆盖全局变量 因此 s=5;但是在这段代码之后局部变量a就销毁了
下一行s+=a++的a就是全局变量a=3
s=8,此时全局变量a=4;
答案选A
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询