printf("sum=%d\n", sum) 變數 sum 未宣告main() {
register int i = 1;
int s = 0;
for (i = 0; i < 100; i++)
s += i;
printf("sum=%d\n", sum); // 編譯錯誤:'sum' undeclared
}
變數宣告為 int s = 0;,但 printf 使用 sum(多打了 um)。C 語言**區分大小寫、嚴格要求識別符完全一致**,s ≠ sum。
#include <stdio.h>
int main(void) {
int i, s = 0; // register 關鍵字現代編譯器多忽略,建議省略
for (i = 0; i < 100; i++)
s += i;
printf("sum=%d\n", s); // 使用正確變數名 s
return 0;
}
-Wall -Wextra -Wshadow,未使用變數、拼寫錯誤多會提示。snake_case、常數 UPPER_SNAKE,避免 s/sum、i/idx 混用。register 關鍵字現代意義register 僅是對編譯器的「建議」,現代優化編譯器(GCC/Clang/MSVC -O2/-O3)自動進行暫存器分配,**手動加 register 反而可能妨礙優化**,且 register 變數**不可取址**(&i 編譯錯誤)。建議**完全不寫**,交給編譯器決定。