如果在一个函数的循环内部对全局变量赋值之后,再次引用这个全局变量的话,这时全局变量的值是刚刚赋的那个值还是他原本的值?
通过程序我发现使用的可能还是他原来的值,那么也就是说,函数循环体内部给全局变量赋值的时候,只是赋给了这个值的一个拷贝是吗?并没有真正改变这个全局变量是吗?
程序片段如下:
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是哪个值呢?
是改变的,刚刚拿vs2015试过了,是你上一次的 x_middle 啊,C语言的话是这样的
直接讲 x_right 打印出来看一下吧。代码不完全,不好验证,理论上全局变量会被修改的