2013-08-31 26 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 y = 2;

2:如果(Y> 0)

3:整数X = 5;

4:else x ++;

在这种情况下,x的使用不受定义支配,但x不在范围内,因此不能使用。我不明白...

回答

0

请记住,x及其声明的定义是两个不同的东西,范围只关心声明。考虑以下内容:

int x; 
if (user_input_integer() == 0) { 
    x = 0; 
} else { 
    x = 1; 
} 
x++;