計算機程式設計 變數 李增奎
大綱 -- 變數 變數的基礎知識 意義 宣告 使用 變數型別 數字 整數 浮點數 字元 指標 字串 2
變數的基礎知識 3 variable – 變數 意義 在數學裡,變數 既不會變 也未必是數字 在程式裡,變數 跟數學裡的變數 意義完全不同 和數字,以及會不會變動,更沒有關係 是 記憶體中 儲存空間 的代號 儲存空間 位置 通常 是看 起始位置 ( 如果是中間的位置,用的時候比較麻煩 ) 大小
變數的基礎知識 4 變數的意義 儲存資料用 的 記憶體空間 的代號 記住! 程式 不過就是 處理資料 的一連串命令 程式的運作 永遠離不開 資料 資料 在處理過程中,需要 能被 儲存 能被 取用 不管是 儲存或者取用 都需要知道 存在哪裡 起始位置 大小 ( 高階的程式,為了確保資料能做正確的運算,還會驗證 資料的 ) 格式
變數的基礎知識 5 變數 宣告 int i; 編譯器做了什麼事? 配置一個 空間 大小: 4 個 bytes ?? 因為 int 根據定義,大小是 4 個 bytes 。 每種資料型別 (date type) 都有定義 使用的記憶體空間大小。 事實上,在 C 裡,資料型別 基本上就是定義 空間大小。 在自己的小筆記本的變數表中,記起來 變數代號起始位置大小 ….. i0xa5238b7e4 …. 記憶體位址,簡單的說就是編號, 從 0 開始,照順序往下編,只是 配合電腦的二進制,一般都是用 16 進制數字表示 記憶體位址
變數的基礎知識 6 變數 使用 變數在使用時,最需要記住的是 – 變數 就是個 儲存空間 變數 ( 儲存空間 ) 的使用 儲存 將 資料 儲存到儲存空間 取用 將 資料 從儲存空間拿出來 初始化儲存空間 在大多數的程式語言中,變數宣告時,會順便做 就是把 裡頭的內容 全部清成 0 但, C 不會
變數的基礎知識 7 簡單用一下 變數 儲存 i = 5; 弄清楚 “=“ 到底做什麼事 !!!!!! = 執行 資料儲存 的動作 相當於 組合語言中的 mov ( 將資料傳送到指定位置 ) 我個人覺得,如果符號能設計成 <= ,大家可能就比較不會搞錯了, 但,由於太常使用了,會覺得很麻煩。 在 = 的左邊 只能放 代表某個儲存空間 的代號 ( 或者 位置編號 ) i = 5; 做什麼事呢 ? 將 5 傳送到 i 代表的那個空間。 ( 儲存起來 ) 變數 在 = 左邊時,就是 當儲存的用。
變數的基礎知識 8 簡單用一下 變數 取用 i +5 把 i 那個位置的資料 取出,然後和 5 做 整數加法運算 取出,就是把資料傳送到 CPU ( 通常是會先放到 CPU 裡的暫存器 中預做準備 ) 基本上,只要 變數 不是出現在 = 的左邊,那就是 取用 取用 vs 儲存 取用 就是把 變數裡頭存的 資料 傳送到 CPU 儲存 把 資料 傳送到 記憶體的 某個指定空間 ( 大多數情況是 變數 )
變數的基礎知識 9 簡單用一下 變數 混合使用 int a, b; a = 5; b = 10; b = a+10; a = a+20; b = a + b; a = a + b + 20; printf(“%d”, a); 宣告 配置 空間 a, 空間 b ,各佔 4bytes 把 5 存進 a 把 10 存進 b 把 a 的內容 (5) 取出,加上 10 ,再存進 b 把 a 的內容 (5) 取出,加上 20 ,再存回 a 把 a 的內容 (25) 取出,再把 b 的內容 取出 (15) ,相加,再存進 b 取出 a, b 內容,相加,再加 20 ,存進 a 把 a 的內容取出,透過 printf 印出 ( 到螢幕 )
變數型別 – data type 10 何謂變數型別? 資料型別 – data type 用來告訴 編譯器 要配置的記憶體空間 需要多大。 高階的程式語言,還包含了 資料限定的格式。 數字 整數 int – 型別關鍵字 大小: 4 bytes 最原始的資料型別 例: int a, b; a = 5; b = 10; a = a + 100;
變數型別 – data type 11 數字 浮點數 double, float – 型別關鍵字 有小數部份的數字 大小: double – 8 bytes float – 4 bytes 格式: IEEE 754 參考網址: 儲存的內容若是不符合格式,仍能處理,但,資料會很有問題。 例: double c, d; c = 5; d = 5.5; printf(“%f, %f”, c, d);
變數型別 – data type 12 數字 整數 vs 浮點數 轉換問題: int a = 5.5; double b = 8.5; printf(“%d, %f”, a, b); printf(“%d, %d”, a, b); printf(“%f, %f”, a, b); a = b; printf(“%d, %f”, a, b); printf(“%d, %d”, a, b); printf(“%f, %f”, a, b); b=a; printf(“%d, %f”, a, b); printf(“%d, %d”, a, b); printf(“%f, %f”, a, b);
變數型別 – data type 13 數字 整數 vs 浮點數 除法:整數除法 vs 浮點數除法 int a = 12, b = 5; double c=12, d=5; printf(“%d\n”, a/b); printf(“%f\n”, a/b); printf(“%d\n”, c/d); printf(“%f\n”, c/d); int e = c/d; printf(“%d\n”, e); printf(“%f\n”, d);
隨堂練習 14 變數型別相關 有一天俊龍去大潤發買泡麵,一碗定價 46 元,若是買 3 碗以 上,每碗打 8 折。俊龍