亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

C語(yǔ)言

C語(yǔ)言變量和數(shù)據(jù)類型

時(shí)間:2024-08-06 01:16:11 C語(yǔ)言 我要投稿
  • 相關(guān)推薦

C語(yǔ)言變量和數(shù)據(jù)類型

  計(jì)算機(jī)要處理的數(shù)據(jù)是以二進(jìn)制的形式存放在內(nèi)存中的,那么大家知道C語(yǔ)言變量和數(shù)據(jù)類型是怎樣的呢?下面一起來看看!

  變量(Variable)

  現(xiàn)實(shí)生活中我們會(huì)找一個(gè)小箱子來存放物品,一來顯得不那么凌亂,二來方便以后找到。計(jì)算機(jī)也是這個(gè)道理,我們需要先在內(nèi)存中找一塊區(qū)域,規(guī)定用它來存放整數(shù),并起一個(gè)好記的名字,方便以后查找。這塊區(qū)域就是“小箱子”,我們可以把整數(shù)放進(jìn)去了。

  C語(yǔ)言中這樣在內(nèi)存中找一塊區(qū)域:

  int a;

  int又是一個(gè)新單詞,它是 Integer 的簡(jiǎn)寫,意思是整數(shù)。a 是我們給這塊區(qū)域起的名字;當(dāng)然也可以叫其他名字,例如 abc、mn123 等。

  這個(gè)語(yǔ)句的意思是:在內(nèi)存中找一塊區(qū)域,命名為 a,用它來存放整數(shù)。

  注意 int 和 a 之間是有空格的,它們是兩個(gè)詞。也注意最后的分號(hào),int a表達(dá)了完整的意思,是一個(gè)語(yǔ)句,要用分號(hào)來結(jié)束。

  不過int a;僅僅是在內(nèi)存中找了一塊可以保存整數(shù)的區(qū)域,那么如何將 123、100、999 這樣的數(shù)字放進(jìn)去呢?

  C語(yǔ)言中這樣向內(nèi)存中放整數(shù):

  a=123;

  =是一個(gè)新符號(hào),它在數(shù)學(xué)中叫“等于號(hào)”,例如 1+2=3,但在C語(yǔ)言中,這個(gè)過程叫做賦值(Assign)。賦值是指把數(shù)據(jù)放到內(nèi)存的過程。

  把上面的兩個(gè)語(yǔ)句連起來:

  int a;

  a=123;

  就把 123 放到了一塊叫做 a 的內(nèi)存區(qū)域。你也可以寫成一個(gè)語(yǔ)句:

  int a=123;

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

  int a=123;

  a=1000;

  a=9999;

  第二次賦值,會(huì)把第一次的數(shù)據(jù)覆蓋(擦除)掉,也就是說,a 中最后的值是9999,123、1000 已經(jīng)不存在了,再也找不回來了。

  因?yàn)?a 的值可以改變,所以我們給它起了一個(gè)形象的名字,叫做變量(Variable)。

  int a;創(chuàng)造了一個(gè)變量 a,我們把這個(gè)過程叫做變量定義。a=123;把 123 交給了變量 a,我們把這個(gè)過程叫做給變量賦值;又因?yàn)槭堑谝淮钨x值,也稱變量的初始化,或者賦初值。

  你可以先定義變量,再初始化,例如:

  int abc;

  abc=999;

  也可以在定義的同時(shí)進(jìn)行初始化,例如:

  int abc=999;

  這兩種方式是等價(jià)的。

  變量定義的位置

  在VC或VS下,變量定義要放在函數(shù)的開頭;也就是說,在定義變量之前不能有其他代碼。而在 GCC、Xcode 下,或者在使用了 GCC 編譯器的 C-Free、Dev C++、Code::Blocks 下,變量定義可以放在函數(shù)的任意位置。

  例如,下面的代碼在 VC、VS、GCC、Xcode 下都是正確的:

  #includeint main(){ int a = 10; int b = 1000; printf("BianChengBang"); return 0;}

  對(duì)代碼稍作修改,將 printf 語(yǔ)句放在變量 a、b 中間,如下所示:

  #include

  int main()

  {

  int a = 10;

  printf("BianChengBang");

  int b = 1000; //在定義b變量之前有 printf 語(yǔ)句

  return 0;

  }

  修改后的代碼在 GCC、Xcode 下是正確的,而在 VC、VS 下就是錯(cuò)誤的。

  為什么不同的編譯器會(huì)有不同的差異呢,根本原因是什么呢?我們將在《C語(yǔ)言變量的定義位置以及初始值》和《C語(yǔ)言的兩套標(biāo)準(zhǔn)》兩節(jié)詳細(xì)講解。

  數(shù)據(jù)類型(Data Type)

  數(shù)據(jù)是放在內(nèi)存中的,變量是給這塊內(nèi)存起的名字,有了變量就可以找到并使用這份數(shù)據(jù)。但問題是,該如何使用呢?

  我們知道,諸如數(shù)字、文字、符號(hào)、圖形、音頻、視頻等數(shù)據(jù)都是以二進(jìn)制形式存儲(chǔ)在內(nèi)存中的,它們并沒有本質(zhì)上的區(qū)別,那么,00010000 該理解為數(shù)字16呢,還是圖像中某個(gè)像素的顏色呢,還是要發(fā)出某個(gè)聲音呢?如果沒有特別指明,我們并不知道。

  也就是說,內(nèi)存中的數(shù)據(jù)有多種解釋方式,使用之前必須要確定;上面的int a;就表明,這份數(shù)據(jù)是整數(shù),不能理解為像素、聲音等。int 有一個(gè)專業(yè)的稱呼,叫做數(shù)據(jù)類型(Data Type)。

  顧名思義,數(shù)據(jù)類型用來說明數(shù)據(jù)的類型,確定了數(shù)據(jù)的解釋方式,讓計(jì)算機(jī)和程序員不會(huì)產(chǎn)生歧義。在C語(yǔ)言中,有多種數(shù)據(jù)類型,例如:

說  明字符型短整型整型長(zhǎng)整型單精度浮點(diǎn)型雙精度浮點(diǎn)型無類型
數(shù)據(jù)類型charshortintlongfloatdoublevoid

  這些是最基本的數(shù)據(jù)類型,是C語(yǔ)言自帶的,如果我們需要,還可以通過它們組成更加復(fù)雜的數(shù)據(jù)類型,后面我們會(huì)一一講解。

  連續(xù)定義多個(gè)變量

  為了讓程序的書寫更加簡(jiǎn)潔,C語(yǔ)言支持多個(gè)變量的連續(xù)定義,例如:

  int a, b, c;float m = 10.9, n = 20.56;char p, q = '@';

  連續(xù)定義的多個(gè)變量以逗號(hào),分隔,并且要擁有相同的數(shù)據(jù)類型;變量可以初始化,也可以不初始化。

  數(shù)據(jù)的長(zhǎng)度(Length)

  所謂數(shù)據(jù)長(zhǎng)度(Length),是指數(shù)據(jù)占用多少個(gè)字節(jié)。占用的字節(jié)越多,能存儲(chǔ)的數(shù)據(jù)就越多,對(duì)于數(shù)字來說,值就會(huì)更大,反之能存儲(chǔ)的數(shù)據(jù)就有限。

  多個(gè)數(shù)據(jù)在內(nèi)存中是連續(xù)存儲(chǔ)的,彼此之間沒有明顯的界限,如果不明確指明數(shù)據(jù)的長(zhǎng)度,計(jì)算機(jī)就不知道何時(shí)存取結(jié)束。例如我們保存了一個(gè)整數(shù) 1000,它占用4個(gè)字節(jié)的內(nèi)存,而讀取時(shí)卻認(rèn)為它占用3個(gè)字節(jié)或5個(gè)字節(jié),這顯然是不正確的。

  所以,在定義變量時(shí)還要指明數(shù)據(jù)的長(zhǎng)度。而這恰恰是數(shù)據(jù)類型的另外一個(gè)作用。數(shù)據(jù)類型除了指明數(shù)據(jù)的解釋方式,還指明了數(shù)據(jù)的長(zhǎng)度。因?yàn)樵贑語(yǔ)言中,每一種數(shù)據(jù)類型所占用的字節(jié)數(shù)都是固定的,知道了數(shù)據(jù)類型,也就知道了數(shù)據(jù)的長(zhǎng)度。

  在32位環(huán)境中,各種數(shù)據(jù)類型的長(zhǎng)度一般如下:

說  明字符型短整型整型長(zhǎng)整型單精度浮點(diǎn)型雙精度浮點(diǎn)型
數(shù)據(jù)類型charshortintlongfloatdouble
長(zhǎng)  度124448

  C語(yǔ)言有多少種數(shù)據(jù)類型,每種數(shù)據(jù)類型長(zhǎng)度是多少、該如何使用,這是每一位C程序員都必須要掌握的,后續(xù)我們會(huì)一一講解。

  最后的總結(jié)

  數(shù)據(jù)是放在內(nèi)存中的,在內(nèi)存中存取數(shù)據(jù)要明確三件事情:數(shù)據(jù)存儲(chǔ)在哪里、數(shù)據(jù)的長(zhǎng)度以及數(shù)據(jù)的處理方式。

  變量名不僅僅是為數(shù)據(jù)起了一個(gè)好記的名字,還告訴我們數(shù)據(jù)存儲(chǔ)在哪里,使用數(shù)據(jù)時(shí),只要提供變量名即可;而數(shù)據(jù)類型則指明了數(shù)據(jù)的長(zhǎng)度和處理方式。所以諸如int n;、char c;、float money;這樣的形式就確定了數(shù)據(jù)在內(nèi)存中的所有要素。

  C語(yǔ)言提供的多種數(shù)據(jù)類型讓程序更加靈活和高效,同時(shí)也增加了學(xué)習(xí)成本。而有些編程語(yǔ)言,例如PHP、JavaScript等,在定義變量時(shí)不需要指明數(shù)據(jù)類型,編譯器會(huì)根據(jù)賦值情況自動(dòng)推演出數(shù)據(jù)類型,更加智能。

  除了C語(yǔ)言,Java、C++、C#等在定義變量時(shí)也必須指明數(shù)據(jù)類型,這樣的編程語(yǔ)言稱為強(qiáng)類型語(yǔ)言。而PHP、JavaScript等在定義變量時(shí)不必指明數(shù)據(jù)類型,編譯系統(tǒng)會(huì)自動(dòng)推演,這樣的編程語(yǔ)言稱為弱類型語(yǔ)言。

  強(qiáng)類型語(yǔ)言一旦確定了數(shù)據(jù)類型,就不能再賦給其他類型的數(shù)據(jù),除非對(duì)數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換。弱類型語(yǔ)言沒有這種限制,一個(gè)變量,可以先賦給一個(gè)整數(shù),然后再賦給一個(gè)字符串。

  最后需要說明的是:數(shù)據(jù)類型只在定義變量時(shí)指明,而且必須指明;使用變量時(shí)無需再指明,因?yàn)榇藭r(shí)的數(shù)據(jù)類型已經(jīng)確定了。

【C語(yǔ)言變量和數(shù)據(jù)類型】相關(guān)文章:

C語(yǔ)言變量的類型10-30

C語(yǔ)言變量定義07-29

C語(yǔ)言的數(shù)據(jù)類型介紹07-16

C語(yǔ)言變量的定義與使用09-05

c語(yǔ)言中什么是變量08-22

關(guān)于C語(yǔ)言變量理解08-13

C語(yǔ)言的數(shù)據(jù)類型有哪些10-11

C語(yǔ)言變量的復(fù)習(xí)提綱07-15

C語(yǔ)言中的相關(guān)變量知識(shí)10-25

C語(yǔ)言基礎(chǔ)之?dāng)?shù)據(jù)類型轉(zhuǎn)換09-23