A-A+
对下面的语句序列 X=1; X=2 Y=X*X+4*X+4; IF Y>X THEN Z=Y
问题详情
对下面的语句序列 X=1; X=2 Y=X*X+4*X+4; IF Y>X THEN Z=Y-X; ELSE Z=Z-Yj 可以实施的优化措施不包括_______。
A.常量合并
B.代码外提
C.死代码删除
D.无用赋值删除
请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:B
给出的语句序列中包含了两次对X的定值,且赋值表达式右边皆为常量,两次定值之间没有出现对X的引用,因此可以实施无用赋值删除的优化;Y的值由X确定,当X为常量时,可以采用常量合并的方式确定Y的值,且可以发现Y的值必然大于X的值,因此条件语句IF为假的部分不可达,成为死代码。选项B中的代码外提是在循环优化采取的优化措施,而给出的代码中并无循环,因此B是正确答案。