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