資料型態的轉換

什麼是資料型態的轉換?

我們說 int sum; 的意義是 sum 這個變數裡所記錄的資料當成整數來用, 同時在放置資料到 sum 變數內時將資料轉為整數格式, 還真是繞口, 為什麼不說 sum 這個變數只能放整數資料 或是乾脆說 sum 是個整數變數 就好了呢?

這三個口述的解釋中第三個最簡捷, 但是也最模糊, 根本沒提到究竟要如何來使用 sum 這個變數, 這種打迷糊仗的說法任何人不能說它是錯的;

第二個解釋若是深入地去看會有一點問題, 但是一般來講如果 sum 這個變數內存放的是整數資料的話 (例如: sum=10;) 那麼在使用 sum 這個變數內存放的資料時 (例如: average = sum/total;) sum 內的資料當然是整數, 以上例來說的確是這樣子的, 可是觀念上卻是錯的, 首先程式在執行時資料的型態 (是整數還是浮點數還是字元) 不是資料的屬性, 而是程式解讀資料的方法, 就好像數字串 1270 到底是十進位的 1270 還是八進位的 696 還是十六進位的 472, 端看你如何去解釋它。 CPU 在使用一個變數內儲存的資料時也有類似的狀況, 等到你學到指標的時候我們可以示範如何在一個整數變數中放一個浮點數、 或是如何把一個字元當作是整數在使用...。

第一個解釋其實是由變數的用法衍生出來的操作型定義, 涵蓋了變數的兩種基本用法:

  1. CPU 在存放資料到變數內時, 需要先把資料的型態轉換為與變數的型態相同,

  2. CPU 在任何地方要直接使用變數內存放的資料時, 會以變數定義的型態來解釋其內存放資料的內容。

範例

例如:

上面這幾個敘述其實相當於

請注意:

變數如何傳入 printf() 函式? 變數的型態有什麼影響?

請注意

C 語言中 Compiler 幫你做自動型態轉換的時機

  1. Assignment Statement

    例如: int x; x = 15.5;

  2. 運算式 (+, -, *, /, >, <...)

    例如: int x; x = x * 1.5;

  3. 函式呼叫

    例如:

上一層
程式設計課程 首頁
by Pei-yih Ting
E-mail: pyting@cs.ntou.edu.tw