1

我参加了编译器课程,现在我正在为考试练习。涵盖的主题之一是可变活跃度。

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

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++)

然后在循环内没有使用“i”值的其他操作,例如检查它的值等等,那么“i”只存在于赋值/增量点,对吗?

基本上问题是,对于上述循环,控制变量是存在于循环内还是仅在递增时存在?当然,除非该变量在循环内使用。

4

1 回答 1

1

变量“a”存在于 1-2 和 4 中,对吗?

对,那是正确的。或者,由于我们通常谈论一个变量在给定步骤之后或之前(而不是期间)是有效的,我应该说:a在步骤 1 之后、步骤 2 之前和步骤 4 之后是有效的(假设a将在这些说明之后的一段时间内使用) .

对于上面提到的循环,控制变量是在循环内还是在递增时存在?

您必须考虑循环的每一步何时发生。循环的执行将如下所示:

  1. 我被初始化
  2. 身体执行
  3. 检查循环条件(读取在步骤 1 中设置的 i 的值)
  4. i 递增(假设循环条件为真)
  5. 身体执行
  6. 检查循环条件(读取在步骤 4 中设置的 i 的值)
  7. ...依此类推,直到条件为假

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

于 2012-09-01T19:06:02.590 回答