选择题   有以下程序:
    #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
【答案解析】全局变量与函数体内局部变量同名时,局部变量会覆盖全局变量。因此在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。