首页 新闻 会员 周边 捐助

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

0
[已解决问题] 解决于 2019-08-18 10:02

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

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

程序片段如下:

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是哪个值呢?

Andrew_qian的主页 Andrew_qian | 菜鸟二级 | 园豆:236
提问于:2018-08-18 09:02
< >
分享
最佳答案
0

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

奖励园豆:5
Arthurian | 小虾三级 |园豆:1123 | 2018-08-18 10:50
其他回答(1)
0

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

行者孙 | 园豆:206 (菜鸟二级) | 2018-08-24 10:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册