編譯器
在上方程式碼中,將 sq 行內展開之後接著生效的最佳化,以及其結果,下列何者正確?
static int sq(int v) { return v * v; }
int g(void) { return sq(6) + 1; }
- A藉由共同子運算式消除,g 會變成呼叫 sq 兩次
- B藉由常數摺疊,g 會變成只回傳 37 的程式碼
- C藉由迴圈展開,v * v 被替換為6次加法
編譯器
static int sq(int v) { return v * v; }
int g(void) { return sq(6) + 1; }