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

iOS 開發基礎:C 語言第三天完整筆記——變數命名、輸出入格式化與資料型別轉換

     編輯:關於C語言

iOS 開發之 C 語言第三天核心知識點總結

在 iOS 開發的學習路徑中,C 語言是奠基石。第三天的課程重點圍繞變數命名規範、printf/scanf 格式化輸出入進階、資料型別轉換以及運算子與運算式展開。掌握這些基礎概念,對於後續學習 Objective-C 與 Swift 的底層機制至關重要。

一、變數命名規則與規範

良好的命名習慣能顯著提升程式碼可讀性與維護性。C 語言變數命名需遵循以下硬性規則:

  • 只能由字母(區分大小寫)、數字、底線(_)組成
  • 首字元不能是數字
  • 不能使用 C 語言關鍵字(如 int、for、while 等)
  • 長度限制視編譯器而定,通常建議不超過 31 個字元

業界常見命名慣例:

  • 駝峰式:studentCount、userName(常用於區域變數、函數參數)
  • 下底線式:student_count、user_name(常用於全域變數、常數)
  • 常數全大寫:MAX_BUFFER_SIZE、DEFAULT_TIMEOUT

建議:名稱要見名知意,避免使用 a、temp、data 等無意義名稱。

二、printf 格式化輸出補充

除了基本的 %d、%f、%c、%s,以下進階格式控制在實際開發中極為常用:

格式符說明範例輸出
%0md整數不足寬度 m 時,前面補 0printf("%05d", 42) → 00042
%.nf輸出浮點數,保留小數點後 n 位printf("%.2f", 3.14159) → 3.14
%.nlf針對 double 型別,保留 n 位小數printf("%.3lf", 2.71828) → 2.718
%g以最短輸出方式顯示浮點數(去除尾端多餘 0,最多保留 6 位有效數字)printf("%g", 123.4500) → 123.45

三、資料型別轉換

C 語言支援隱式轉換(自動)與顯式轉換(強制型別轉換):

  • 隱式轉換:運算式中不同型別運算時,編譯器自動將「較窄」型別提升為「較寬」型別(如 int → float → double)。
  • 顯式轉換:使用轉型運算子 (type_name),例如 (float)int_var、(int)double_val。

注意陷阱:浮點數轉整數會直接截斷小數部分(非四捨五入),大整數轉小型別可能導致資料溢位截斷。

四、scanf 函數進階與緩衝區處理

1. 多資料一次輸入

scanf("%d%f", &a, &b);  // 以空白字元(空格、Tab、換行)分隔輸入

關鍵限制:

  1. 若格式字串中指定了分隔符(如 scanf("%d,%f", &a, &b)),輸入時必須完全符合該分隔符,空格與換行將不再被視為分隔符。
  2. 一次輸入多筆資料時,僅限數值型別(整數/浮點數),若混入 char 型別極易導致輸入錯亂(因字元會讀取空白字元)。

2. scanf 緩衝區機制

scanf 從標準輸入緩衝區讀取資料。若輸入不符合格式,錯誤資料會殘留在緩衝區,導致後續 scanf 直接讀取髒資料而不等待使用者輸入。常見清理手段:

  • while(getchar() != '\n'); —— 讀取並丟棄至換行符
  • scanf("%*[^\n]%*c"); —— 讀取並丟棄整行(含換行符)
  • 避免使用 fflush(stdin)(C 標準未定義行為,僅部分編譯器支援)

五、交換兩個變數的值

經典三步驟(需暫存變數):

int temp = a;
a = b;
b = temp;

進階技巧(無需暫存變數,僅限整數):

a = a + b;
b = a - b;
a = a - b;

或使用 XOR 運算:

a ^= b;
b ^= a;
a ^= b;

六、算術運算式與運算子優先序

C 語言算術運算子優先序(由高到低):

  1. () 括號
  2. + - 單目正負號
  3. * / % 乘除餘
  4. + - 加減
  5. = += -= *= /= %= 賦值運算子(右結合性)

複合賦值運算子(如 a += 5 等價於 a = a + 5)不僅簡潔,在某些情況下還能產生更高效的機器碼。

七、char 型別參與算術運算

char 本質是 1 byte 整數(有號或無號視編譯器而定),儲存的是字元的 ASCII 碼值。因此可直接參與算術運算:

char c = 'A';  // ASCII 65
printf("%d", c + 1);  // 輸出 66
printf("%c", c + 1);  // 輸出 'B'

此特性常用於字元大小寫轉換('a' - 'A' == 32)、數字字元轉整數(c - '0')等場景。


小結:第三天的知識點看似基礎,實則是所有進階程式設計的基石。特別是輸入輸出緩衝區機制與型別轉換規則,若理解不透徹,極易在除錯時陷入「明明邏輯正確卻輸出錯誤」的迷霧中。建議多實作練習,體會緩衝區殘留資料對 scanf 連續呼叫的影響。

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