为了账号安全,请及时绑定邮箱和手机立即绑定

int x =10在这个位置为什么fn1()输出的不是10而是50

#include <stdio.h>

int x = 77;

void fn1()

{

    printf("fn1(): x=%d\n", x);       

}

int main()

{

   

    if(x>0)

    {

        x = 100;

        x /= 2;

        printf("if语句内, x=%d\n", x);       

    }

    printf("main方法内, x=%d\n", x); int x = 10;

    fn1();

    return 0;

}


正在回答

1 回答

本节应该定义三个x,即要用三次int x。

第一个int x=77是全局变量,作用范围是整个程序。

第二个int x=10是局部变量,作用于整个函数main()。

第三个int x=100也是局部变量,但仅作用于if复合语句范围内。

三个x作用范围依次减小,范围大的可以作用于范围小的,范围小的不能作用于范围大的,且优先使用范围小的。

你在if语句中没有定义第三个x,而是直接使用x,且第二个x定义在if语句之后,所以你的if语句中使用的是第一个x。你之后定义了第二个x=10,此时你的第一个x=50,而fn1()在main函数之外,使用的是第一个x=50。


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

int x =10在这个位置为什么fn1()输出的不是10而是50

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信