2013-08-31 2 views
1

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

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 у = 2;

2: если (у> 0)

3: INT х = 5;

4: else x ++;

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

ответ

0

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

int x; 
if (user_input_integer() == 0) { 
    x = 0; 
} else { 
    x = 1; 
} 
x++; 
Смежные вопросы