【隨堂筆記】C 語言基礎概念


  • 編譯式語言/直譯式語言
    編譯式語言:需要事先根據執行環境編譯(compile)成可以執行的機器碼
    ex. C/C++
    直譯式語言:不需編譯過程,是在執行過程中一行行直譯成機器碼執行
    ex. Python、JavaScript、PHP...

  • 編譯式語言優/缺點
    優點:程式執行效能好(速度快)
    缺點:開發、除錯速度較慢

  • C語言副檔名為.c
  • C語言編譯過程
    .c 程式原始碼進行程式碼展開等預處理---透過預處理器(pre-processor)
    -> 轉成組合語言---透過編譯器
    -> 轉成目地(object)檔案(副檔名為 .o 檔案)---經過組譯器(assembler)
    -> 讓目的檔成為電腦可執行的檔案---透過連接器(linker)連接函式庫(libraries 為其他已經寫好的可用程式碼)
  • 簡單C語言範例&說明
  • repl.it 預設 run 只會執行 main.c 的檔案,若需要執行其他檔案需要點選 shell 自行輸入指令編譯後執行:
    xxxx為檔案名稱
    clang-7 -pthread -lm -o xxxx xxxx.c
    
    執行檔案:
    ./xxxx
    
  • C 語言中變數前面需要宣告資料型態(data type),不同資料型別可以表示的範圍和佔用的空間不同
  • 在 C 程式語言中 = 等號非相等是給定值的意思,比較是否相等為 ==
  • 除了 %d 可以指定 10 進位整數外,還有其他格式化指定:
    %d:顯示 10 進位整數。例如 10, 20
    %f:顯示浮點數(有小數點小數)。例如 0.2, 2.1
    %c:顯示字元。例如 'B', 'a'
    %s:顯示字串。例如 "ABC", "大家好"
#include <stdio.h>

int main(void) {
  int age = 20; //int定義為整數
  float eye = 0.8; //float定義為浮點數
  printf("我是%s,今年:%d歲,視力: %f\n", "小明", age, eye);
  return 0;
}
  • C 語言資料型別:整數(Integer)、浮點數(Float)、字元(Character)
  • 浮點數有分 floatdouble 資料型別,後者的表示數字範圍大於前者許多,然而後者所佔用的記憶體空間是前者兩倍。unsigned 則代表非負數意思。
  • 字元 char 是一個半形文字的意思(一個中文字是多個字元)。char 可以表示 -128~127 的數字,佔用 8 位元空間。在 C 語言中字元用單引號 '' 表示。
    p.s. 字元變數僅能儲存單一字元。字串和中文為多個字元
  • 字串 strings 是多個字元的集合體(陣列)。使用 "" 雙引號包裹字串,最後一個字元需為 \0 代表字串結束(宣告變數時不需輸入但要預留空間)。
    -> index 索引從零開始,[0] 代表第一個字元。
// 字串長度 + 1(預留字串結束符號),宣告後需立即給值
char name[6] = "Jacky";

// 代表 J,index 從 0 開始
name[0];
  • 在邏輯中若使用整數輸出 1 代表 true,0 代表 false
  • 比較運算子 & 邏輯運算子
    比較運算子與python相同
  • 注意若是計算順序可以參考:括號內優先,先乘除後加減
    %:取餘數 -> x % y (例如:7 % 3 為 1)
  • 輸入運算子
    scanf 用來取得使用者的輸入後,再存入變數所在的地址
    scanf 與 printf 差異:scanf前面需要再加個 & 來取址
// & 為取址運算子,會將變數的記憶體位址取出,則輸入的數值就知道變數的記憶體位址並儲存(但字元陣列名稱由於本身就有位址資訊,故不用使用 & 來取址。)

int input;
scanf("%d", &input);
  • C 語言 if else 條件判斷
    if...else
# include <stdio.h>

int main() {
    int age = 20;
    // 當變數大於 20 進入程式區塊
    if (age > 20) {
        printf("恭喜可以投票!");
    } else {
        printf("sorry, 你還未成年喔!");
    }
    printf("程式結束");
}

if...else if...else

# include <stdio.h>

int main() {
    int age = 40;
    // 當變數大於 65 進入程式區塊
    if (age >= 65) {
        printf("喔喔,年齡在 65 以上的長者\n");
    } else if (age >= 40 && age < 65) {
        printf("喔喔,你現在是壯年\n");
    } else {
        printf("喔喔,你現在是青年\n");
    }
    printf("程式結束");
}






你可能感興趣的文章

數據分析師的末日?GPT-4 的新功能 - code interpreter

數據分析師的末日?GPT-4 的新功能 - code interpreter

淺嚐 Web AR

淺嚐 Web AR

什麼是閉包 closure?

什麼是閉包 closure?






留言討論