C語言基礎

int i = 5;
int a = i++;
int b = ++i;
printf("%d %d %d\n", a, b, i);

執行上方使用前置與後置 ++ 的程式碼時的輸出,下列何者正確?

  1. A5 6 6
  2. B5 7 7
  3. C6 7 7
查看答案與解析

正確答案:B. 5 7 7

後置的 i++ 以遞增前的值作為運算式的值,之後才把 i 加1。因此 a 得到5,i 變成6。前置的 ++i 先把 i 加1,再以加完後的值作為運算式的值,因此 i 變成7,b 也得到7。輸出為「5 7 7」。

  • A. 即使是 i++,i 本身也會增加為6。這是認為 i 仍為5時的值。
  • B. 正確。a 是遞增前的5,b 與 i 是遞增兩次後的7。
  • C. 後置 i++ 的值是遞增前的5,因此 a 不是6。
練習這個領域 前往領域頁面

C語言基礎的其他題目

  1. 執行上方在 if 敘述的條件中寫了 = 的程式碼時的輸出,下列何者正確?
  2. 為了檢查暫存器值 reg 的位元2是否為1,寫了上方的程式碼。執行時的結果,下列何者正確?
  3. uint8_t 是8位元的無號整數型別。執行上方程式碼時的輸出,下列何者正確?
  4. uint8_t 是8位元的無號整數型別。執行上方讓 x 遞增10次的程式碼時的輸出,下列何者正確?
  5. unsigned char 為8位元,int 為32位元。執行上方程式碼時的輸出,下列何者正確?