變量的定義
變量定義就是告訴編譯器在何處創建變量的存儲,以及如何創建變量的存儲。變量定義指定一個數據類型,並包含了該類型的一個或多個變量的列表,如下所示:
type variable_list;
在這里,type 必須是一個有效的 C 數據類型,可以是 char、w_char、int、float、double、bool 或任何用戶自定義的對象,variable_list 可以由一個或多個標識符名稱組成,多個標識符之間用逗號分隔。
變量聲明
變量聲明向編譯器保證變量以給定的類型和名稱存在,這樣編譯器在不需要知道變量完整細節的情況下也能繼續進一步的編譯。變量聲明只在編譯時有它的意義,在程序連接時編譯器需要實際的變量定義。
注意:
在程序中可以多次聲明一個變量,但變量只能在某個文件、函數或代碼塊中被定義一次。
整型聲明時,若至少有一個其它的說明符,int可以省略,如下面的定義是等價的:
unsigned short int a; unsigned short a;
signed一般只用於修飾char,其它類型在缺省的情況下默認帶符號。
下面的定義都是等價的:
short; signed short;short int;signed short int; int; signed int ; signed; long;signed long;long int;signed long int; unsigned short; unsigned short int; unsigned int;unsigned; unsigned long;unsigned long int;
變量的初始化
變量的初始化指的是給變量賦一個值。
C 中的左值(Lvalues)和右值(Rvalues)
C 中有兩種類型的表達式:
左值(lvalue):指向內存位置的表達式被稱為左值(lvalue)表達式。左值可以出現在賦值號的左邊或右邊。
右值(rvalue):術語右值(rvalue)指的是存儲在內存中某些地址的數值。右值是不能對其進行賦值的表達式,也就是說,右值可以出現在賦值號的右邊,但不能出現在賦值號的左邊。
變量是左值,因此可以出現在賦值號的左邊。數值型的字面值是右值,因此不能被賦值,不能出現在賦值號的左邊。下面是一個有效的語句:
int g = 20;
但是下面這個就不是一個有效的語句,會生成編譯時錯誤:
10 = 20;
初始化局部變量和全局變量
當局部變量被定義時,系統不會對其初始化,您必須自行對其初始化。定義全局變量時,系統會自動對其初始化,如下所示:
數據類型 |
初始化默認值 |
int |
0 |
char |
'' |
float |
0 |
double |
0 |
pointer |
NULL |
正確地初始化變量是一個良好的編程習慣,否則有時候程序可能會產生意想不到的結果,因為未初始化的變量會導致一些在內存位置中已經可用的垃圾值。