1. 程式人生 > 實用技巧 >資料型別-常量與變數

資料型別-常量與變數

前言

  首先,在正式介紹常量與變數之前,我們需要宣告C語言中正確的命名方法。
  正如我們在給檔案命名時所遵循的命名規則,我們在給C語言變數和常量命名時也需要遵循一定的規則。在變數中,我們稱之為識別符號(用來標識常量,變數,函式的字元序列)。
  一般情況下,C語言命名有如下規則:

      1)名稱由字母,數字,下劃線組成。
      2)第一個(即開頭)不能是數字。
      3)C語言中大小寫敏感。 //e.g.:A與a表示不同的變數/常量
      4)不能使用關鍵字。

C語言中的關鍵字一部分如下:

int float double char short long signed unsigned
if else switch case default for while do
break continue return void const sizeof struct typedef
static extern auto register enum goto union volatile

另一部分為系統內建函式。

常量

常量大致分為以下幾類分類

1)符號常量

  概念:用識別符號代替常量。
  語法:define 符號常量 常量
  目的:為了使程式具有可拓展性與可移植性。
  樣例:#define PI 3.1415926 //我們把圓周率用PI替換,在程式中需要使用圓周率時,我們不需要一個一個的鍵入3.1415926……而是用一個PI代替之

2)直接常量

  概念:用識別符號儲存常用資料型別常量。
  語法:資料型別 常量名 常量值
  分類:
    整型常量:
      十進位制:由0~9與+/-組成
      八進位制:由0開頭,後面為0~7組成
      十六進位制:由ox開頭,後面為 0~9 和 a~f 組成    //備註:你知道你的QQ號電腦可以用十六進位制登入嗎?想要一個帥氣的QQ登入介面嗎,快把QQ轉換為十六進位制吧!別忘記了加0x哦。
    實型常量:
      十進位制:同上。
      指數型:格式控制符為%e,後面我們會講到,輸出為科學計數法樣式。預設為double型。
    字元常量:
      注意:字元常量與符號常量不一個概念。符號常量用來替換後面的常量表達式,後面可以跟函式。字元常量為一個數據型別,格式控制符為%c,用來儲存一個字元,例如'a'。
      概念:單引號括起來的單個普通字元或者轉義字元
      樣例: char a='a';


    字串常量:
      C語言中字串儲存有兩種形式:字元陣列和字元指標(C++STL庫中有一個string,不過C語言並沒有這種資料型別)。
      概念:字串,顧名思義,即一串字元。在C語言中,用雙引號括起來。
      字串常量的另一個特點為末尾自動加'\0'作為字串的結束標誌。
      原因:字串長度不固定。'\0'表示無意義。所以可以作為字元結束標誌。

變數

  定義:資料型別 變數1,變數n;
  遵循先定義,後使用原則。
  位置一般放在開頭。
  理解這個概念,我們先插入如下說法:

      1、計算機要處理的資料(諸如數字、文字、符號、圖形、音訊、視訊等)是以二進位制的形式存放在記憶體中的;
      2、我們將8個位元(Bit)稱為一個位元組(Byte),並將位元組作為最小的可操作單元。

  我們不妨舉一個例子來說明一下:
  生活中我們會找一個小箱子來存放物品,一來顯得不那麼凌亂,二來方便以後找到。計算機也是這個道理,我們需要先在記憶體中找一塊區域,規定用它來存放整數,並起一個好記的名字,方便以後查詢。
  1)那麼,C語言中這樣在記憶體中找一塊區域:
int a;//int即為:Integer的簡寫,意思是整數。a是我們給這塊區域起的名字;

  按照上面的例子:我們很好理解這句話的意思:在記憶體中找一塊區域,命名為 a,用它來存放整數。
  注意 int 和 a 之間是有空格的,它們是兩個詞。也注意最後的分號,int a表達了完整的意思,是一個語句,要用分號來結束。
  不過int a;僅僅是在記憶體中找了一塊可以儲存整數的區域,那麼如何將數字放進去呢?
  2)C語言中這樣向記憶體中放整數:
a=1314;
  '='是一個新符號,在C語言中,這個過程叫做賦值(Assign)。賦值是指把資料放到記憶體的過程。

  與之相對應的有一個叫做初始化的概念,即在定義的時候賦值,也就是在找到一個箱子的時候把東西放進去
int a=1314;

補充:
      1)先定義變數,再初始化:
      int a;
      a=1314;
      2)定義同時進行初始化:
      int a=1314;

  當然,a中的整數不是一成不變的,只要我們需要,隨時可以更改。
  更改的方式就是再次賦值,例如:

      int a=1314;
      a=521;

  第二次賦值,會把第一次的資料覆蓋(擦除)掉,也就是說,a 中最後的值是521.
  因為a的值可以改變,所以我們給它起了一個形象的名字,叫做變數(Variable)

資料型別

  資料是放在記憶體中的,變數是給這塊記憶體起的名字,有了變數就可以找到並使用這份資料。
  在C語言中,int 有一個專業的稱呼,叫做資料型別(Data Type)。
  顧名思義,資料型別用來說明資料的型別,確定了資料的解釋方式,讓計算機和程式設計師不會產生歧義。在C語言中,有多種資料型別,我們常用的資料型別有以下幾種:

說 明 字元型 短整型 整型 長整型 單精度浮點型 雙精度浮點型 無型別
資料型別 char short int long float double void

資料長度

  所謂資料長度(Length),是指資料佔用多少個位元組。佔用的位元組越多,能儲存的資料就越多,對於數字來說,值就會更大,反之能儲存的資料就有限。多個數據在記憶體中是連續儲存的,彼此之間沒有明顯的界限,如果不明確指明資料的長度,計算機就不知道何時存取結束。例如我們儲存了一個整數 1000,它佔用4個位元組的記憶體,而讀取時卻認為它佔用3個位元組或5個位元組,這顯然是不正確的。所以,在定義變數時還要指明資料的長度。而這恰恰是資料型別的另外一個作用。資料型別除了指明資料的解釋方式,還指明瞭資料的長度。因為在C語言中,每一種資料型別所佔用的位元組數都是固定的,知道了資料型別,也就知道了資料的長度。

在32位環境中,各種資料型別的所佔用的位元組數一般如下:

說 明 字元型 短整型 整型 長整型 單精度浮點型 雙精度浮點型
資料型別 char short int long float double
長 度 1 2 4 4 4 8

其次,我們也可以使用sizeof()函式來求一個數據型別所佔用的位元組說。例如:sizeof(int).
我們還需要明白一點,在程式設計中,儲存整數的資料型別的大小關係為:short,int,long 為非遞減順序。
\(short\leqslant int\leqslant long\)
最後:資料型別只在定義變數時指明,而且必須指明;使用變數時無需再指明,因為此時的資料型別已經確定了。