C语言,答案为什么选B?谢谢

 我来答
yzviolet
2014-07-21 · TA获得超过2578个赞
知道大有可为答主
回答量:1196
采纳率:0%
帮助的人:987万
展开全部
变量的作用域问题。printf 中的 i 是 int i = 3 的时候声明的 i。
int i = 5 的 i 一直有效,int f1 中的 i ,操作的是 main 上面的 int i = 5 时声明的 i。
但在 main 的 {} 中,int i = 5 的 i 被 int i = 3 的 i 掩盖了。声明了 int i = 3 之后,main 里面操作的 i 是这个 i。
当碰到 main 里面的 {int i = 10; i++; } 时,在这对 {} 中又声明了一个 i,这时候在 {} 里面的 i++ 是操作这个 i。但这个 i 作用域只在 {} 中,离开右边的 } 其生命周期就结束了。
所以 i += 1操作的是 刚进 main 时声明的 int i = 3 的 i。printf 中的也是,所以答案是 B,显示 4
橙心橙愿
2014-07-21 · TA获得超过1032个赞
知道小有建树答主
回答量:460
采纳率:100%
帮助的人:223万
展开全部
虽然全局的i初始值为5,但是在main(){}中,i被初始为3(把全局的i给覆盖掉了),
{int i=10}中的i的作用于仅限制在{}内,不论怎么操作,对于{}外的i没影响,f1()中的i实际是对全局i的操作,不对main(){}中i=3影响,所以起作用的仅是i+=1结果为4,故选b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蒋裎馨
2014-07-21 · TA获得超过294个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:88.2万
展开全部
此题是为了理解变量的作用域!

int i=5; //这里的i是全局的变量i,这里为了区分叫i_1;
int fun()
{
i=i+1; //这里操作的i就是全局变量i_1;
/*printf("%d\n",i); */ //调用这个函数就一定输出 6 ;
return(i);
}
int main()
{
int i=3; //main函数定义的main函数内部范围内的i;有别于 i_1,可看做 i_2;
{int i=10;i++; /*printf("%d\n",i); */} //这里的i有别于前面的值,叫做i_3;执行之后i_3=11;
fun(); //输出的是6
i+=1; //执行此条语句操作的是 i_2,结果 i_2 = 4 ;
printf("%d\n",i); //输出的是 i_2 ;
printf("\n");
system("pause");
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
buerzhouzhu818
2014-07-21
知道答主
回答量:23
采纳率:100%
帮助的人:18万
展开全部
这道题目主要是局部变量之间的问题,main()函数中,{int i=10;i++},然后调用fun(),由于没有全局变量,所以默认fun()当中的i初始值为0,所以fun中传回来的i值是1,但是起不到任何的作用,所以还是i=3,下面i进行加1,值为4,中括号的{int i=10;i++}仅仅在这个中括号中起作用,其余地方不起作用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sophiayll
2014-07-21
知道答主
回答量:8
采纳率:0%
帮助的人:8.2万
展开全部
f1() 这个功能就是一个干扰项,main里面定义的i是一个局部变量,他只在这个范围内有效,所有对它的操作只有在main函数里面才有用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式