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

问一个问题,如果函数内部没有定义局部变量的数据类型,那以哪个为第一输出呢?请看代码

#include <stdio.h>

int x = 77;

void fn1()

{

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

}

int main()

{

    

    if(x>0)

    {

        x = 100;这里没有对x进行数据类型进行定义

        x /= 2;

        printf("if语句内, x=%d\n", x);    结果输出 50 

    }

    int x = 10;(假如把主函数的全局变量移到后面来,为什么就无效了呢?

    printf("main方法内, x=%d\n", x);即这里就不是输出10了

    fn1();

    return 0;

}

请懂得童靴解答一番


正在回答

1 回答

    printf("main方法内, x=%d\n", x);即这里就不是输出10了  这一句的输出结果仍然是10才对

你是想说fn1()函数输出的结果就变成50了吧

那是自然,因为函数内部声明的x是默认的main函数外部的x(全局变量)

而你在main函数内部重新定义的int x = 10属于局部变量

fn1()首先调用的自然是全局变量x啦,x在进入main函数后在if语句中被改变成了50

所以结果自然输出为50

方便请采纳,不懂继续问~


2 回复 有任何疑惑可以回复我~
#1

听星光过银河

他在打印最后一句之前加了一句 int x = 10; 为什么没有改变x的值?
2016-10-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

问一个问题,如果函数内部没有定义局部变量的数据类型,那以哪个为第一输出呢?请看代码

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