C语言,答案为什么选B?谢谢
6个回答
展开全部
变量的作用域问题。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
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
展开全部
虽然全局的i初始值为5,但是在main(){}中,i被初始为3(把全局的i给覆盖掉了),
{int i=10}中的i的作用于仅限制在{}内,不论怎么操作,对于{}外的i没影响,f1()中的i实际是对全局i的操作,不对main(){}中i=3影响,所以起作用的仅是i+=1结果为4,故选b
{int i=10}中的i的作用于仅限制在{}内,不论怎么操作,对于{}外的i没影响,f1()中的i实际是对全局i的操作,不对main(){}中i=3影响,所以起作用的仅是i+=1结果为4,故选b
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
此题是为了理解变量的作用域!
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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这道题目主要是局部变量之间的问题,main()函数中,{int i=10;i++},然后调用fun(),由于没有全局变量,所以默认fun()当中的i初始值为0,所以fun中传回来的i值是1,但是起不到任何的作用,所以还是i=3,下面i进行加1,值为4,中括号的{int i=10;i++}仅仅在这个中括号中起作用,其余地方不起作用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
f1() 这个功能就是一个干扰项,main里面定义的i是一个局部变量,他只在这个范围内有效,所有对它的操作只有在main函数里面才有用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询