Considere el siguiente programa intermedio en código de tres direcciones
p = a - b q = p * c p = u * v q = p + q
¿Cuál de las siguientes corresponde a una única asignación estática del código anterior?
A)
p1 = a - b q 1 = p1 * c p1 = u * v q1 = p1 + q1
B)
p3 = a - b q4 = p3 * c p4 = u * v q5 = p4 + q4
C)
p 1 = a - b q1 = p2 * c p3 = u * v q2 = p4 + q3
D)
p1 = a - b q1 = p * c p2 = u * v q2 = p + q
(A) A
(B) B
(C) C
(D) D
Respuesta: (B)
Explicación: De acuerdo con la Asignación Única Estática
- Una variable no se puede utilizar más de una vez en el LHS
- Una variable debe inicializarse al menos una vez.
Ahora mirando las opciones dadas
- a – el código viola la condición 1 ya que p1 se inicializa nuevamente en esta declaración: p1 = u * v
- c- el código no es válido ya que q 1 = p 2 * c , q 2 = p 4 + q 3 – En estas sentencias p 2 , p 4 , q 3 no se inicializan en ninguna parte
- d- el código no es válido ya que q 2 = p + q es incorrecto sin moverlo al registro
Por lo tanto, la opción B es la única opción correcta.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA