Considere el siguiente segmento de código C.
for (i = 0, i<n; i++) { for (j=0; j<n; j++) { if (i%2) { x += (4*j + 5*i); y += (7 + 4*j); } } }
¿Cuál de las siguientes es falsa?
(A) El código contiene cálculo invariable de bucle
(B) Hay un alcance de eliminación de subexpresiones comunes en este código
(C) Hay un alcance de reducción de fuerza en este código
(D) Hay un alcance de eliminación de código muerto en este código
Respuesta : (D)
Explicación: La pregunta se refiere a una afirmación falsa
4*j is common subexpression elimination so B is true. 5*i can be moved out of inner loop so can be i%2. Means, A is true as we have loop invariant computation. Next, 4*j as well as 5*i can be replaced with a = - 4; before j loop then a = a + 4; where 4*j is computed, likewise for 5*i. C is true as there is scope of strength reduction. By choice elimination, we have D.
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