2023年11月5日 星期日

Chapter 02:C語言_資料型態

 目標:

  1. 認識資料型態
  2. 認識常見資料型態類別

筆者的小講堂

一般在此就會開始講解如何進行輸入/輸出了,但C語言對於格式有一定的要求與嚴謹度,故筆者一直在思考如何盡量完整的帶完輸入/輸出,減少日後學習過於凌亂。在此先介紹資料型態。

看不懂沒關係,至少要先有認識。當然也別就此打了退堂鼓,學習要有毅力,加油!

一、資料型態

為何要理解、學會資料型態?因為電腦的記憶體有限,所以要根據需求挑選適當的資料型態,以最大化利用記憶體。在C剛出來的那個時代(上世紀中後期),很多電腦的記憶甚至不到現在主流的1/10,所以在此就很重要了。

電腦是採用二進位制,所以在儲存大小、位數等的計算上是以2為底數行指數運算的,等下介紹時便可體會到。在進入之前,先了解到儲存一個0或1為1bit,而1byte是8bit

整數(int):顧名思義是數學上的整數,包含負整數、0、正整數。其可分為一下幾種:

  1.  整數(int)、有號整數:占記憶體4 bytes,可處理範圍為2^32(即(2^8)^4),數字區間-2,147,483,648 至 2,147,483,647。可縮寫成signed。
  2. 無號整數(unsigned int):占記憶體4 bytes,因為沒有負整數且可處理範圍不變,數字區間為0~ 4,294,967,295。可縮寫成unsigned。
  3. 有號短整數(signed short int):占記憶體2 bytes,數字區間-32768~32767。可縮寫成short。
  4. 無號短整數(unsigned short int):占記憶體2 bytes,數字區間0~65536。可縮寫成unsigned short。
  5. 超長整數(long long int):占記憶體8 bytes,可處理區間為-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807。縮寫成long long。

其他資料型態,可以參考Microsoft learn,連結:https://learn.microsoft.com/zh-tw/cpp/cpp/data-type-ranges?view=msvc-170。在此就不贅述了,僅介紹常用。

浮點數(float):在數學上即為有小數點的數。在此介紹兩種:

  1.  單精確浮點數(float):占記憶體4 bytes,可處理區間為1.2×10^-38~3.4×10^38,有效位數是7、8位。
  2. 倍精確浮點數(double):占記憶體8 bytes,可處理區間為2.2×10^-308~1.8×10^308,有效位數是15、16位。

可以注意到的是,雖然上述的浮點數無負數範圍,但仍可以處理負數。一樣,在此僅簡單帶過。

字串、陣列、字元(char) :依你所宣告的陣列大小(例如規定要放幾個資料、元素)不同而有所不同。通常是用來處理字串、陣列、字元,後面會講到。

在自動轉換上,順位會是double>float>unsigned long>long>unsigned int>int。簡言之,就是越換越不精準,請注意。

強制轉換上,可以這麼做:

  1. 宣告整數變數a,即int a
  2. 將a轉換成浮點數b,即:float b; b=(float) a;

二、常見資料型態類別

在這個小節裡,我們先認識一些常見的資料型態的類別,以便在後續可以處理像是輸入/輸出等程序。

字串:即為一串文字,可以是單字、詞彙、句子、或是數字等。但要注意的是,字串中的數字不具有數學上的意義,它不能行四則運算、計算等,而是單純的文字。

數字:這裡常見為整數與浮點數。在此的數字有數學上的意義,簡單來說,就是可以進行運算。

字元:大致上是電腦底層文字,乍看之下像是英文字母之類的,但對電腦而言,是有特殊意義的,基本應用會在輸入/輸出的章節有第一次接觸。值得認識的是,字元和ASCII有關連喔!

陣列:好比儲放資料的櫃子,一格一格的,之後會介紹到。

指標:表達記憶體的位置,而指標是C的重頭戲,也往往是令人頭痛的地方。其實這是很管用的東西,因為它可以跟深入底層進行運算。

當然,還有很多,在此一樣只作為一個基本的介紹。除了筆者才疏學淺外,以上介紹的是基本入門最常見的。

回目錄

沒有留言:

張貼留言