选择题 32.  有以下程序:
    #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。