C語言基礎

uint8_t x = 250;
for (int i = 0; i < 10; i++)
    x++;
printf("%d\n", x);

uint8_t 是8位元的無號整數型別。執行上方讓 x 遞增10次的程式碼時的輸出,下列何者正確?

  1. A4
  2. B255
  3. C260
查看答案與解析

正確答案:A. 4

uint8_t 能表示的範圍是0~255。標準規定放不進無號整數型別的值,會成為除以 2⁸ = 256 的餘數,因此從250開始每次加1,255的下一個會回到0。加10次之後,結果是 250 + 10 = 260 除以256的餘數4。相對地,有號整數型別運算的溢位是未定義行為。

  • A. 正確。是260除以256的餘數4。
  • B. 這是認為會停在最大值255(飽和)時的值。無號整數型別會回到0的一側。
  • C. 這是不考慮溢位、把250加上10的值。uint8_t 放不進256以上的值。
練習這個領域 前往領域頁面

C語言基礎的其他題目

  1. unsigned char 為8位元,int 為32位元。執行上方程式碼時的輸出,下列何者正確?
  2. uint8_t 是8位元的無號整數型別,int 為32位元。執行上方程式碼時的結果,下列何者正確?
  3. int 與 unsigned int 為32位元。執行上方程式碼時的結果,下列何者正確?
  4. unsigned int 為32位元。執行上方程式碼時的動作,下列何者正確?
  5. 設定「char c = 200;」並以 printf 的 %d 顯示 c 的程式,以 x86-64 Linux 用的 gcc 編譯執行時顯示 −56,以 Arm Linux 用的 gcc 則顯示200。產生差異的理由為下列何者?