2013-04-25 100 views
0

所以这是一个更理想的问题,但在这里。假设我有以下C代码:循环中的变量变化

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

说循环运行多次,并且还说第一次循环时条件满足。但第二次循环条件并不令人满意。变量是否仍等于第一个循环中赋值的值?

+0

为什么不呢? – Zirak 2013-04-25 03:46:19

+0

我的意思是更多的是为什么问题。 – codedude 2013-04-25 03:56:29

回答

2

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

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


我是想多了,为什么问题

的,因为作为一个规则,在C和C++的变量,而他们活着保留他们的价值观。

一个自动/本地变量在{ }范围内存在,它在其中被定义。所以它会保留分配给它的值(,除非明确更改)直到控制仍在范围内。

staticglobal变量在整个程序生命周期中都是有效的。因此,他们保留分配给他们的值(,除非明确更改),直到程序结束。