0

所以这更像是一个理论问题,但这里有。假设我有以下 C 代码:

for(parameter) {
    //do something
    if(condition) {
        variable = Value; 
    }
}

假设循环运行了几次,并说第一次循环时满足条件。但是第二次循环条件不满足。变量是否仍然等于它在第一个循环中分配的值?

4

1 回答 1

2

是的,除非您明确更改了值,否则它将是第一次迭代中分配的值。

请注意,这仅在控件位于 for 循环内时。一旦控制超出了函数, in 的值variable将取决于它的存储类,即:它是如何声明的。如果它是本地/自动变量,则它不存在于函数的范围之外{ },而如果它是static,它在整个程序生命周期内保持活动状态并保持状态。


我的意思是这更像是一个为什么的问题

因为作为一项规则,C 和 C++ 中的变量在它们处于活动状态时会保留它们的值。

自动/局部变量{ }在其定义的范围内是活动的。因此它将保留分配给它的值(除非明确更改),直到控制保持在范围内。

static并且global变量在整个程序生命周期中都是活动的。所以他们保留分配给他们的值(除非明确改变)直到程序结束。

于 2013-04-25T03:45:08.843 回答