Open
Description
In the test case Assign, analyzing the following code in function Assign.assign():
void assign() {
int x = 1, y;
x = 2;
x = 3;
x = 4;
y = x;
}
We can get respectively {x=1}, {x=2}, {x=3} and {x=4} , meaning that we still consider x
as constant value instead of NAC while its value has been changed.
However, in the test case 'Loop', the following function leads to a failure on OJ:
void whileNAC() {
int a, b = 0, c = 0;
int i = 0;
while (i < 10) {
a = b;
b = c;
c = 1;
++i;
}
}
the variable c
is expected as NAC while my analyzer regards it as constant 1 in the while loop.
When should a variable become another constant, and when should it become NAC? It confused me a lot, need I do some dead code detection to it? But I think it's not the task of this assignment.
Metadata
Metadata
Assignees
Labels
No labels