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

为什么输出一直是 50 10 50 呢?

#include <stdio.h>
int x = 77;
void fn1()
{
    printf("fn1(): x=%d\n", x);       
}
int main()
{
    int x1= 10;
    if(x1>0)
    {
        x = 100;
        x /= 2;
        printf("if语句内, x=%d\n", x);       
    }
    printf("main方法内, x=%d\n", x1);
    fn1();
    return 0;
}

fn1()函数输出的不是77?错在哪  请问大神们

正在回答

5 回答

因为全局变量所有函数共用一个,主函数改变了全局变量,调用函数也跟着变了

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

if里x=100变成定义局部变量x=100
int x=100

#include <stdio.h>
int x = 77;
void fn1()
{
    printf("fn1(): x=%d\n", x);       
}
int main()
{
    int x = 10;
    if(x>0)
    {
        int x = 100;//注意这里,我也纠结了好一会,没有int的话就不是if里的局部变量了,而是main的局部变量
        x /= 2;
        printf("if语句内, x=%d\n", x);       
    }
    printf("main方法内, x=%d\n", x);
    fn1();
    return 0;
}


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

#include <stdio.h>

int x = 77;

void fn1()

{

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

}

int main()

{

    int x = 10;

    if(x>0)

    {

        int x = 100;

        x /= 2;

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

    }

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

    fn1();

    return 0;

}


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

全写X的话  输出的结果就是 50  50  77

56614e540001f17e04760318.jpg

56614e7a0001c52803610125.jpg


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

super珊__

和答案一模一样的没有错的呢 怎么会运行出来就不一样呢 我也想知道
2015-12-12 回复 有任何疑惑可以回复我~
#2

狼女

if里x=100变成赋值x=100 int x=100
2016-03-25 回复 有任何疑惑可以回复我~

 int x1= 10;
    if(x1>0)

这块有问题 你应该写成x 不应该写成x1,这块是考全局变量和局部变量的

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

举报

0/150
提交
取消

为什么输出一直是 50 10 50 呢?

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