Loop Invariant Computation (Option A is TRUE): The expression $\verb|int constant_val = a * b + 5;|$ inside the outer loop does not depend on the loop variable $\verb|i|$. It can be moved outside the entire loop structure.
Strength Reduction (Option B is TRUE): The expression $\verb|temp = i * 8|$ involves a multiplication. A compiler can replace this with a bitwise shift $(i \ll 3)$ or by using addition in each iteration of the loop, which are "cheaper" operations.
Dead Code Elimination (Option C is TRUE): The block $\verb|if (0)| ~\{ ~\ldots ~\}$ will never execute because the condition is always false. The compiler can remove this entire block of code during the optimization phase.
Common Sub-expression Elimination (Option D is FALSE): In this specific snippet, there are no identical expressions calculated multiple times that could be replaced by a single variable. Each calculation $\verb|(a * b + 5|$, $\verb|i * 8|$, and $\verb|temp + j|)$ is unique within its scope.