选择题
有以下程序:
#include<stdio.h>
int m=1,n=2;
void sub1(int m,int n)
{m+=2;n++;}
void sub2()
{m++;n+=2;}
main()
{ printf('%d,%d,',m,n);
sub1(4,5);
printf('%d,%d,',m,n);
sub2();
printf('%d,%d\n',m,n);
程序运行后的输出结果是______
A、
1,2,1,2,2,4
B、
1,2,6,6,7,8
C、
I,2,2,4,2,4
D、
1,2,6,6,2,4
【正确答案】
A
【答案解析】
全局变量与函数体内局部变量同名时,局部变量会覆盖全局变量。因此在sub1函数内,全局变量m、n是不可见的,在函数sub1内对m、n操作的是局部变量,对全局变量不产生影响。但在sub2函数内,全局变量m、n是可见的。因此,第一个printf打印的是全局变量m、n,故打印的是1、2,第二个printf,调用sub1,没有修改全局变量m、n,故打印的是1、2,第三个printf,由于之前调用了sub2,修改了全局变量m、n。因此,打印的是2、4。故答案为选项A。
提交答案
关闭