2012-09-01 29 views
1

我做了一个编译器课程,现在我正在为我的考试练习。其中涵盖的主题是variable liveness循环中的可变活性

现在,在循环外,如果我们有

1. int a = 1; 
2. a++; 
3. int b = 2; 
4. a = b; 

则变量 “a” 是住在1-2和4,对不对?

内循环的,如果我们有

1. for (int i = 1; i < 3; i++) 

,然后利用价值的其他经营业务“我”的循环,如检查它的价值等等里面,那么“我”只是住在分配/增量的地方,对吧?

基本上问题是,对于像上面提到的那样的循环来说,循环中的控制变量还是只是在增量时?当然,除非循环内使用该变量。

回答

1

变量“a”是在1-2和4中生活的,对吗?

是的,这是正确的。或者,因为我们通常会谈论某个变量在一个给定步骤之后或之前(而不是某个步骤),我应该说:a在步骤1之后,步骤2之前和步骤4之后有效(假设a将在一段时间之后使用说明)。

对于像上面提到的那样的循环,是循环内的控制变量还是只在增量时?

您必须考虑循环的每个步骤何时发生。一个循环的执行将看起来像这样:身体执行

  • 循环条件被检查(读我的将其在步骤1中设定的值)
    1. i初始化
    2. i递增(假设循环条件为真)
    3. 主体excutes
    4. 循环条件为检查(读我的将其在步骤4中设置的值)
    5. ...依此类推,直到条件为假

    因此,每次执行主体后,通过读取执行主体前设置的i的值来检查条件。这意味着我必须在整个身体的执行过程中生活。

  • +0

    谢谢你的帮助:) –