有以下程序 #include <stdio.h> int m=1,n=2; void sub1(int m,int n) { m+=2; n++; } void sub2( ) { m++; n+=2; } main( ) {

admin2021-06-15  15

问题 有以下程序
#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、1,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选项。
转载请注明原文地址:https://kaotiyun.com/show/C5tp777K
0

最新回复(0)