主要補充與彙整課程筆記
官方筆記:https://cs50.harvard.edu/x/2023/notes/1/
補充資訊來源::Chat GPT
C語言
1. 聲明式相關
1.1. 函數聲明的重要性
在C語言中,使用任何函數之前需要先聲明它,因過往年代電腦效率不佳,不能直接訪問所有函數
1.2. Type Declaration/類型聲明式
告訴編譯器變量或函數的數據類型
int x;
# 類型聲明式
1.3. 聲明變量為不可變
當下文嘗試改變此變量,會報錯無法更改
1.4. 類型聲明後下文不用再次類型聲明
當上文已經聲名過變量
int n = 1
則下文之後使用都不用再次聲明數據類型
n = 3
2. 養成書寫好習慣
2.1. 函數團隊協作
- 事先溝通好每個函數模塊的輸入與輸出
2.2. 避免隱式聲明函數
聲明函數:函數沒有在頭文件內、沒有在同文件下定義的函數名稱。
隱式聲明函數的例子:
有個函數 addNumbers 來歷不明
#include <stdio.h> int main() { int result = addNumbers(5, 3); // 隱式聲明 addNumbers printf("Result is %d\n", result); return 0; } // addNumbers 函數的定義 int addNumbers(int a, int b) { return a + b; }
在不包含相應頭文件的情況下,某些函數可能會被隱式聲明,但這是不安全的,因為它可能導致類型不匹配和其他錯誤。因此,使用顯式聲明包含必要的頭文件是一個好習慣。
- Header files/頭文件:在程式的開頭的第一行中使用
#include
指令來包含頭文件,通常是擁有.h
擴展名的文件,例如,#include <stdio.h>
- Header files/頭文件:在程式的開頭的第一行中使用
2.3. 顯示聲明函數
有頭文件、有同文件的函數調用
顯式聲明函數的例子:
#include <stdio.h> // 顯式聲明 addNumbers int addNumbers(int a, int b); int main() { int result = addNumbers(5, 3); printf("Result is %d\n", result); return 0; } // addNumbers 函數的定義 int addNumbers(int a, int b) { return a + b; }
3. C語言語法特性
3.1. Do-while
c語言特有的
適用情況:
至少執行一次的循環:當你需要確保循環體至少執行一次時,
do-while
循環是理想的選擇。這是因為條件檢查是在循環體執行後進行的。用戶輸入驗證:在需要從用戶那裡獲取並驗證輸入直到滿足特定條件為止的情況下,
do-while
循環非常有用。例如,提示用戶輸入一個有效的數字或選項。遊戲或應用程序的主循環:在某些類型的遊戲或應用程序中,
do-while
循環可以用於實現主循環,直到滿足退出條件(如用戶選擇退出)。
3.2. 範例
原本:
int n = get_int("Size: "); while(n < 1) { n = get_int("Size: "); }
使用do-while:
先聲明變量->創建變量->檢查變量
int n; do { n = get_int("Size: "); } while(n<1);
4. 📝Integer overflow/整數溢出
Interger 通常為32位元/bit,當超出時就會發生截斷。
截斷:非預期結果可能是負數或其他
原因:RAM內存量不足
有限數量的位/bit:在一定範圍表示某個數,總會有到一個點把所有位用光
4.1. 🔎解決
使用 long 通常為64位元(bit)
改成long類型聲明式
long n = 400000000
佔位符
%li
5. 浮點數
佔位符
%.20f
5.1. Type casting/類型轉換
適用於當運算結果需要小數點
float n = (float)x / (float)y
5.2. 📝浮點數不精準性
- RAM不足
5.3. 🔎解決
- 使用 double 類型
6. 佔位符
%s:在這裡插入某個str值
%%:輸出%的語法
%.2f:浮點數(小數點)的佔位符