溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

C語(yǔ)言變量的定義包括什么變量存儲(chǔ)類(lèi)型和變量

發(fā)布時(shí)間:2020-07-30 17:11:13 來(lái)源:億速云 閱讀:866 作者:Leah 欄目:編程語(yǔ)言

本篇文章給大家分享的是有關(guān)C語(yǔ)言變量的定義包括什么變量存儲(chǔ)類(lèi)型和變量,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。

C語(yǔ)言變量的定義包括變量存儲(chǔ)類(lèi)型和變量的名稱(chēng)。C語(yǔ)言定義變量的格式:“數(shù)據(jù)類(lèi)型  變量名;”,“數(shù)據(jù)類(lèi)型”表示想要存儲(chǔ)什么類(lèi)型的數(shù)據(jù),“變量名”就是你想給這個(gè)變量起個(gè)什么名字,通常都是用字母。

變量的定義

定義變量的格式非常簡(jiǎn)單,如下所示:

數(shù)據(jù)類(lèi)型  變量名;

首先要強(qiáng)調(diào)的一點(diǎn)是:最后的分號(hào)千萬(wàn)不要丟了。變量的定義是一個(gè)語(yǔ)句,我們說(shuō)過(guò),語(yǔ)句都是以分號(hào)結(jié)尾的。

“數(shù)據(jù)類(lèi)型”表示想要存儲(chǔ)什么類(lèi)型的數(shù)據(jù)就定義什么類(lèi)型的變量。想要存儲(chǔ)整數(shù)就定義成 int 型;想要存儲(chǔ)小數(shù)就定義成 float 型或 double 型;想要存儲(chǔ)字符就定義成 char 型……

“變量名”就是你想給這個(gè)變量起個(gè)什么名字,通常都是用字母。比如:

int i;

就表示定義了一個(gè)整型變量 i。

變量名的命名規(guī)則

在定義變量時(shí),變量名可以是字母、數(shù)字和下劃線的組合。但是也不是隨便的組合,要注意以下幾個(gè)命名規(guī)則:

1) 變量名的開(kāi)頭必須是字母或下劃線,不能是數(shù)字。實(shí)際編程中最常用的是以字母開(kāi)頭,而以下劃線開(kāi)頭的變量名是系統(tǒng)專(zhuān)用的。

隨便打開(kāi)一個(gè)頭文件就會(huì)看到,它里面所有的變量名、宏名、函數(shù)名全是以下劃線開(kāi)始的。

所以為了避免與系統(tǒng)定義的名字產(chǎn)生沖突,在編程的時(shí)候,除非要求這么定義,否則永遠(yuǎn)都不要使用下劃線作為一個(gè)變量名的開(kāi)頭。

2) 變量名中的字母是區(qū)分大小寫(xiě)的。比如 a 和 A 是不同的變量名,num 和 Num 也是不同的變量名。

3) 變量名絕對(duì)不可以是C語(yǔ)言關(guān)鍵字,這一點(diǎn)一定要記??!

4) 變量名中不能有空格。這個(gè)可以這樣理解:因?yàn)樯厦嫖覀冋f(shuō)過(guò),變量名是字母、數(shù)字、下劃線的組合,沒(méi)有空格這一項(xiàng)。

變量的賦值

那么變量定義好之后怎么將數(shù)放到這個(gè)變量里面呢?首先要理解的是,將一個(gè)數(shù)字放到一個(gè)變量中,這個(gè)動(dòng)作叫“賦值”。“賦”即“給予”的意思,所以“給變量賦值”意思就是將一個(gè)值傳給一個(gè)變量。那怎么賦值呢?是通過(guò)賦值運(yùn)算符=,賦值的格式是:

變量名 =  要賦的值;

它的意思是將=右邊的數(shù)字賦給左邊的變量。比如:

i = 3;

這就表示將 3 賦給了變量 i,此時(shí) i 就等于 3 了。

這里需要注意的是,這里的=跟數(shù)學(xué)中的“等于號(hào)”是不一樣的。在剛開(kāi)始學(xué)習(xí)C語(yǔ)言的時(shí)候,在這一點(diǎn)上大家很難從數(shù)學(xué)的思維中轉(zhuǎn)變過(guò)來(lái)。在C語(yǔ)言中=表示賦值,即將右邊的值賦給左邊的變量,而不是左邊的變量等于右邊的值。

那C語(yǔ)言中有沒(méi)有表示相等的運(yùn)算符呢?這就是雙等號(hào)==。這個(gè)運(yùn)算符就與數(shù)學(xué)中的“等于”是同一個(gè)意思了。

以上就是變量的定義和賦值,它們是分成兩步寫(xiě)的。也可以將它們合成一步,而且事實(shí)上,在實(shí)際編程中用得最多的也是合二為一的寫(xiě)法。那么怎么合在一起呢?很簡(jiǎn)單,形式如下:

數(shù)據(jù)類(lèi)型  變量名 = 要賦的值;

比如:

int i = 3;

就表示定義了一個(gè)變量 i,并把 3 賦給這個(gè)變量。它與

int i;
i =3;

是等價(jià)的。

在定義變量時(shí)也可以一次性定義多個(gè)變量,比如:

int i, j;

這就表示定義了變量 i 和 j。這里需要強(qiáng)調(diào)的是,當(dāng)同時(shí)定義多個(gè)變量時(shí),變量之間是用逗號(hào)隔開(kāi)的,千萬(wàn)別寫(xiě)成分號(hào)。這是很多新手最容易犯的錯(cuò)誤,即將逗號(hào)和分號(hào)記混了。

同樣也可以在定義多個(gè)變量的同時(shí)給它們賦值:

int i = 3, j = 4;

中間還是用逗號(hào)隔開(kāi),最后別忘記輸入分號(hào)。

最后需要注意的是,在較老的 C89/C90 標(biāo)準(zhǔn)(也稱(chēng) ANSI C 標(biāo)準(zhǔn))中,變量只能在程序的開(kāi)頭定義,或者說(shuō)變量定義的前面不能有其他非聲明或非定義的語(yǔ)句。比如在C語(yǔ)言中像下面這種寫(xiě)法就是錯(cuò)誤的:

# include <stdio.h>
int main(void)
{
    int i;
    i = 3;
    int j = 4;  //這句是錯(cuò)誤的,因?yàn)樵谒懊嬗幸粋€(gè)給變量i賦值的非定義語(yǔ)句
    return 0;
}

在 VC++ 6.0 或者 VS2010 下編譯的時(shí)候會(huì)提示下面的錯(cuò)誤:

error C2143: 語(yǔ)法錯(cuò)誤 : 缺少“;”(在“類(lèi)型”的前面)

但是這種寫(xiě)法在.cpp文件(C++ 源文件)中是允許的,.cpp文件中可以在程序的任意位置定義變量。

其實(shí)這與語(yǔ)言本身并沒(méi)有什么關(guān)系,并不是說(shuō)C語(yǔ)言中變量就不能定義在程序中間。這實(shí)際上是與標(biāo)準(zhǔn)有關(guān)系的,有些編譯器使用的是 C89 標(biāo)準(zhǔn),C89 標(biāo)準(zhǔn)要求所有聲明(比如函數(shù)聲明、變量定義)必須要寫(xiě)在程序、函數(shù)或復(fù)合語(yǔ)句的開(kāi)頭,而 C99 的新特性允許語(yǔ)句和聲明按任意順序排列,只要遵循“先聲明后使用”的原則就行。

因?yàn)?VC++ 6.0 和 VS2010 遵循的是 C89 標(biāo)準(zhǔn),或者說(shuō)它不能完全支持 C99 標(biāo)準(zhǔn),所以它不允許將變量定義在程序中間;而 Linux 中 GCC 編譯器遵循的是 C99 標(biāo)準(zhǔn),所以同樣是.c文件,同樣是編寫(xiě)C語(yǔ)言,它就可以將變量定義在程序的任意位置,只要是在使用位置之前即可。

其實(shí) C99 標(biāo)準(zhǔn)是比較好的,變量需要的時(shí)候才定義,縮短了它的生命周期,節(jié)省了內(nèi)存。因?yàn)橹灰x變量,系統(tǒng)就會(huì)為它分配內(nèi)存空間,所以如果在前面定義了但是到最后才使用它,那么在使用之前它一直占著內(nèi)存不放,有點(diǎn)浪費(fèi)。

但是盡管如此,大家在編程的時(shí)候還是盡量按照 C89 的標(biāo)準(zhǔn)編寫(xiě),即使在完美支持 C99 標(biāo)準(zhǔn)的編譯器中也最好不要將聲明寫(xiě)在程序的中間。因?yàn)?C89 歷時(shí)較長(zhǎng),現(xiàn)在它仍然是主流,很多編譯器仍然只支持 C89 標(biāo)準(zhǔn)或不能很好地支持 C99 標(biāo)準(zhǔn)。所以按 C89 標(biāo)準(zhǔn)編寫(xiě)可移植性更強(qiáng)。

上面提到“復(fù)合語(yǔ)句”,在復(fù)合語(yǔ)句中也可以定義變量。所謂語(yǔ)句就是以分號(hào)結(jié)尾的,而復(fù)合語(yǔ)句就是多個(gè)語(yǔ)句組合在一起的語(yǔ)句。在C語(yǔ)言中,用大括號(hào){ }括起來(lái)的多個(gè)語(yǔ)句稱(chēng)為復(fù)合語(yǔ)句。

復(fù)合語(yǔ)句在流程控制中用得特別多,比如后面將要學(xué)習(xí)的 if、for、while 一般都是跟復(fù)合語(yǔ)句的。此時(shí)在這些復(fù)合語(yǔ)句中也可以定義變量,但是也只能定義在它的開(kāi)頭。主函數(shù) main 下面也是用大括號(hào)括起來(lái)的,所以主函數(shù) main 下的函數(shù)體本質(zhì)上也是一個(gè)復(fù)合語(yǔ)句,是一個(gè)大的復(fù)合語(yǔ)句。

所以它們還是有共性的,也就是說(shuō),在C語(yǔ)言中,只要是用大括號(hào){ }括起來(lái)的,那么在它的開(kāi)頭都可以定義變量。而且這些在大括號(hào)中定義的變量都稱(chēng)為局部變量。此外,在大括號(hào)外面也可以定義變量,叫全局變量。

以上就是C語(yǔ)言變量的定義包括什么變量存儲(chǔ)類(lèi)型和變量,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI