关于C语言全局变量的一个问题

2019-08-18 09:22发布

问题:

 如果在一个函数的循环内部对全局变量赋值之后,再次引用这个全局变量的话,这时全局变量的值是刚刚赋的那个值还是他原本的值?

通过程序我发现使用的可能还是他原来的值,那么也就是说,函数循环体内部给全局变量赋值的时候,只是赋给了这个值的一个拷贝是吗?并没有真正改变这个全局变量是吗?

程序片段如下:

while (fabs(my_function(x_middle)) > DEVIATION)
    {
        printf("\tx%d = %f...\n", count_num, x_middle);
        count_num++;

        if (is_same_symbol(my_function(x_middle), my_function(x_right)) == 1)
        {
            x_right = x_middle;    //迭代下一次判断的区间范围
            x_middle = (x_middle + x_left) / 2;            
            continue;
        }

其中x_right是全局变量,x_middle是函数内部的局部变量。

当进入if条件的时候,对全局变量赋值,之后继续循环,当下一次在进入if判断的时候,使用的x_right是哪个值呢?

回答1:

是改变的,刚刚拿vs2015试过了,是你上一次的 x_middle 啊,C语言的话是这样的



回答2:

直接讲 x_right 打印出来看一下吧。代码不完全,不好验证,理论上全局变量会被修改的