Доминирование контрольного потока

Я изучаю компиляторы для личного проекта, и для этого я искал документы из университета в Великобритании. Один из вопросов, на которые я наткнулся, гласит:

Draw a CFG which contains a definition followed by a use of a variable x, but in 
which the use of x is not dominated by any definitions of x.

Как это возможно? Если в определении не доминирует определение, это означает, что блок, в котором используется x, будет иметь x вне области видимости? Я не смотрю на это правильно?

Скажем у нас

1: int y = 2;

2: если (у> 0)

3: int x = 5;

4: еще x++;

В этом случае использование x не является доминирующим в определении, но x не входит в область действия, поэтому его нельзя использовать. Я не понимаю...

1 ответ

Имейте в виду, что определение x и его объявление - это две разные вещи, и область видимости касается только объявлений. Учтите следующее:

int x;
if (user_input_integer() == 0) {
    x = 0;
} else {
    x = 1;
}
x++;
Другие вопросы по тегам