有以下程序: #include int m=1,n=2; void subl(int m,int n) {m+=2;n++;} void sub2() {m++;n+=2;} ma

admin2017-07-05  23

问题 有以下程序:   
    #include
    int m=1,n=2;
    void subl(int m,int n)   
    {m+=2;n++;}   
    void sub2()
    {m++;n+=2;}
    main()  
    {printf("%d,%d,",m,n);
    subl(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

解析 全局变量与函数体内局部变量同名时,局部变量会覆盖全局变量,因此在subl()函数内,全局变量m,n是不可见的,在函数sub1()内对m,n操作的是部变量,对全局变量不产生影响。但在sub2()函数内,由于没有和全局变量重名,因此在此函数内,m,n是可见的。因此,第一个printf()打印的是全局变量m,n,故打印的是1,2;第二个printf(),调用subl(),没有修改全局变量m,n,故打印的是1,2;第三个printf(),之前调用了sub2(),修改了全局变量m,n,因此,打印的是2,4。故答案为A选项。
转载请注明原文地址:https://jikaoti.com/ti/mYi0FFFM
0

最新回复(0)