首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C 語言新手常見錯誤:printf("sum=%d\n", sum) 變數 sum 未宣告

     編輯:C 語言問答

錯誤代碼

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,未使用變數、拼寫錯誤多會提示。
  • 使用 IDE/編輯器的**自動完成**(VS Code + clangd, CLion, Visual Studio),減少手打識別符。
  • 命名風格一致:區域變數 snake_case、常數 UPPER_SNAKE,避免 s/sum、i/idx 混用。
  • 編譯錯誤訊息第一行通常直指行號與識別符,**養成先看第一行錯誤**的習慣。

延伸:register 關鍵字現代意義

register 僅是對編譯器的「建議」,現代優化編譯器(GCC/Clang/MSVC -O2/-O3)自動進行暫存器分配,**手動加 register 反而可能妨礙優化**,且 register 變數**不可取址**(&i 編譯錯誤)。建議**完全不寫**,交給編譯器決定。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved