代碼片段中 unsigned char 變量進行遞減運算,最終結果為 173,初學者困惑於計算過程。
unsigned char 範圍 0~255,溢出時環繞:0 - 1 = 255。c -= 3 實際執行 c = c - 3,若 c 為 1,則 1-3 = -2 → 模 256 得 254。c != 0 導致循環持續直到 c 經過多次溢出最終為 0。c = 7。#include <stdio.h>
int main() {
unsigned char c = 7;
int count = 0;
do {
c -= 3;
count++;
} while (c != 0);
printf("Loop count: %d\n", count); // 輸出 173
return 0;
}
int 或明確計算迭代次數。-Wextra -Wconversion)可捕獲隱式轉換風險。