所以这更像是一个理论问题,但这里有。假设我有以下 C 代码:
for(parameter) {
//do something
if(condition) {
variable = Value;
}
}
假设循环运行了几次,并说第一次循环时满足条件。但是第二次循环条件不满足。变量是否仍然等于它在第一个循环中分配的值?
是的,除非您明确更改了值,否则它将是第一次迭代中分配的值。
请注意,这仅在控件位于 for 循环内时。一旦控制超出了函数, in 的值variable
将取决于它的存储类,即:它是如何声明的。如果它是本地/自动变量,则它不存在于函数的范围之外{ }
,而如果它是static
,它在整个程序生命周期内保持活动状态并保持状态。
我的意思是这更像是一个为什么的问题
因为作为一项规则,C 和 C++ 中的变量在它们处于活动状态时会保留它们的值。
自动/局部变量{ }
在其定义的范围内是活动的。因此它将保留分配给它的值(除非明确更改),直到控制保持在范围内。
static
并且global
变量在整个程序生命周期中都是活动的。所以他们保留分配给他们的值(除非明确改变)直到程序结束。