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:否则x++;

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

4

1 回答 1

1

请记住,x 的定义和它的声明是两个不同的东西,作用域只关心声明。考虑以下:

int x;
if (user_input_integer() == 0) {
    x = 0;
} else {
    x = 1;
}
x++;
于 2013-10-13T01:29:11.130 回答