我正在研究个人项目的编译器,为此,我正在查看英国一所大学的一些论文。我偶然发现的一个问题如下:
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:if(y> 0)
3:int x = 5;
4:否则x ++;
在这种情况下,x的使用不受定义支配,但x不在范围内,因此不能使用。我不明白......
答案 0 :(得分:0)
请记住,x及其声明的定义是两个不同的东西,范围只关注声明。请考虑以下事项:
int x;
if (user_input_integer() == 0) {
x = 0;
} else {
x = 1;
}
x++;