版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第2章不變的和變的箱子常量與變量 標識符和關(guān)鍵字 常量 變量 綜合應用計算學生平均成績 跟我上機 第2章不變的和變的箱子常量與變量 標識符和關(guān)鍵字 常量 變量 綜合應用計算學生平均成績 跟我上機 第2章不變的和變的箱子常量與變量 標識符和關(guān)鍵字 常量 變量 綜合應用計算學生平均成績 跟我上機 第2章不變的和變的箱子常量與變量 標識符和關(guān)鍵字 常量 變量 綜合應用計算學生平均成績 跟我上機 第2章不變的和變的箱子常量與變量 標識符和關(guān)鍵字 常量 變量 綜合應用計算學生平均成績 跟我上機 第2章不變的和變的箱子常量與變量 標識符和關(guān)鍵字 常量 變量 綜合應用計算學生平均成績 跟我上機 不變的和變的
2、箱子常量與變量在C語言中,根據(jù)存儲方式和表示形式,數(shù)據(jù)有常量和變量之分,就像方程有已知數(shù)和未知數(shù)一樣。那么,你知道二者的區(qū)別和應用嗎?本章就來討論一下吧。 2.1 標識符和關(guān)鍵字 2.1.1 標識符2.1.2 關(guān)鍵字2.1.1 標識符C語言中,常量、變量、函數(shù)名稱都是標識符。標識符,可以看做一個代號,就像日常生活中物品的名稱一樣。標識符的名稱可以由用戶來決定,但也不是想怎么命名就怎么命名,它也需要遵循一定的規(guī)則。 2.1.1 標識符 標識符只能是由英文字母(AZ,az)、數(shù)字(09)和下劃線(_)組成的字符串,并且其第一個字符必須是字母或下劃線。如:int MAX_LENGTH; /*由字母和
3、下劃線組成*/ 不能使用C語言中保留的關(guān)鍵字(見2.1.2小節(jié))。 C語言對大小寫是敏感的,程序中不要出現(xiàn)僅靠大小寫區(qū)分的標識符,如:int x, X;/*變量x 與 X 容易混淆*/2.1.1 標識符 標識符應當直觀且可以拼讀,讓別人看了就能了解其用途。標識符最好采用英文單詞或其組合,不要太復雜,且用詞要準確,便于記憶和閱讀。切忌使用漢語拼音來命名。如: 標識符的長度應當符合“min-length & max-information(最短的長度表達最多的信息)”原則。 盡量避免名字中出現(xiàn)數(shù)字編號,如Value1、Value2等,除非邏輯上需要編號。這是為了防止程序員不肯為命名動腦筋而導致產(chǎn)生
4、無意義的名字。2.1.2 關(guān)鍵字關(guān)鍵字是C程序中的保留字,通常已有各自的用途(如函數(shù)名),不能用來做標識符,例如“int double;”就是錯誤的,會導致程序編譯。因為 double 是關(guān)鍵字,不能做變量名。下表列出了C語言中的所有關(guān)鍵字。2.1.2 關(guān)鍵字autoenumrestrictunsignedbreakexternreturnvoidcasefloatshortvolatilecharforsignedwhileconstgotosizeof_Boolcontinueifstatic plexdefaultinlinestruct_Imaginarydointswitchdoub
5、lelongtypedefelseregisterunion2.2 常量2.2.1 什么是常量2.2.2 數(shù)值常量2.2.3 字符常量2.2.4 字符串常量2.2.5 符號常量2.2 常量其實我們已經(jīng)使用過常量了,只是我們不知道,在前面的程序中輸出過的“Hello World!”就是一個常量,是一個字符串常量,從這我們不難看出,常量的值在程序運行中是不能改變的。2.2.1 什么是常量在程序中,有些數(shù)據(jù)是不需要改變的,也是不能改變的,因此,我們把這些不能改變的固定值稱之為常量。到底常量長什么樣呢?我們就來看幾條語句吧。01 int a=1;02 char ss=a03 printf(“Hello
6、 n”);在此,我們看一下“1”,“a”,“Hello”,這些在程序執(zhí)行中都是不能改變的,它們都是常量。2.2.1 什么是常量細心一些的讀者可能會問:這些常量怎么看上去不一樣呢?確實,就像布可以分為絲綢、棉布、麻布各種類型一樣,常量也是有種類之分的。2.2.1 什么是常量【范例2-1】 顯示不同類型的常量的值 01 #include 02 int main(void)/*程序的入口*/03 04 printf(+125 n);/*輸出+125并換行*/05 printf(-50 n);/*輸出-50并換行*/06 printf(a n);/*輸出a并換行*/07 printf(Hello n)
7、;/*輸出Hello并換行*/08 return 0;/*程序無錯誤安全退出*/在本例中,有四個常量,分別是數(shù)值+125,-50,字符“a”和字符串“Hello”。這些就是常量的不同類型的值。這里,我們可以把常量分為數(shù)值常量、字符常量、字符串常量和符號常量(后面我們會具體介紹)。 2.2.2 數(shù)值常量上例中的+125,-50都是數(shù)值常量,通常表示的是數(shù)字,就像數(shù)字可以分為整型,實型一樣,數(shù)值常量也可以分為整型常量和實型常量。數(shù)字有正負之分,數(shù)值常量的值當然也有正負。在上面的例子中+125帶的是“+”,當然也可以不帶,而-50前的“-”是必須要帶的。2.2.2 數(shù)值常量【范例2-2】 在命令行中
8、輸出數(shù)值常量。01 #include 02 int main(void)03 04 printf(123n);/*輸出123*/05 printf(45.31n);/*輸出45.31*/06 printf(-78n);/*輸出-78*/07 printf(-12.8975n);/*輸出-12.8975*/08 return 0;第4行輸出一個正整數(shù)123,第5行輸出正實數(shù)45.31,第6行輸出負整數(shù)-78,第7行輸出負實數(shù)-12.8975,這些都是數(shù)值常量。2.2.2 數(shù)值常量在C語言中,數(shù)值常量如果大到一定得程度,程序就會出現(xiàn)錯誤,無法正常運行,這是為什么?原來,C程序中的量,包括我們現(xiàn)在學
9、的常量,也包括在后面要學到的變量,在計算機中都要放在一個空間里,這個空間就是常說的內(nèi)存。你可以把它們想成是一個個規(guī)格定好了的盒子,這些盒子的大小是有限的,不能放無窮大的數(shù)據(jù)。那到底能放多大?學到數(shù)據(jù)類型就會有所認識。在這里只需記住,整數(shù)也好,小數(shù)也好,不是你想放多大就能放多大的。不過你不用擔心,你能碰到的數(shù)不管多大都能想辦法放進程序中去,具體的辦法你慢慢就會學會的。2.2.3 字符常量在C語言中,字符常量就是指單引號里的單個字符,像上例中的“a”,這是一般情況,還有一種特殊情況,比如:“n”,“a”,像這樣的字符常量就是我們所說的轉(zhuǎn)義字符。這種字符是以反斜杠()開頭,后面跟一個字符或一個八進制
10、或十六進制數(shù),表示的不是單引號里面的值,而是“轉(zhuǎn)義”,即轉(zhuǎn)化為具體的含義。下面是C語言中常見的轉(zhuǎn)義字符表: 2.2.3 字符常量字符形式含義0空字符n換行符r回車符t水平制表符v垂直制表符a響鈴b退格符f換頁符單引號雙引號2.2.3 字符常量字符形式含義反斜杠?問號字符ddd任意字符xhh任意字符注 意:在C語言中,3和 3 的含義是不一樣的,一個是數(shù)值,可運算,一個是字符,一個符號而已。而a和A同樣也是不一樣的,字符區(qū)分大小寫。2.2.3 字符常量【范例2-3】 比較字符常量的含義。01 #include 02 int main(void)03 04 printf(a,A n);/*輸出a,
11、A并換行*/05 printf(123x20 x20n);/*輸出123、空格、單引號、空格和雙引號,最后換行*/06 return 0;范例中不僅用到數(shù)值常量,比如123,字符常量,比如a,A等,還用到轉(zhuǎn)義字符,如n,、x20等。第4行首先輸出一個小寫字母“a”,然后又輸出一個大寫字母“A”,接著輸出一個轉(zhuǎn)義字符“n”,相當于輸出一個換行符。第5行先輸出一個數(shù)值常量123,接著輸出一個轉(zhuǎn)義字符“x20”,相當于輸出1個空格,接著輸出轉(zhuǎn)義字符“”,相當于輸出1個單引號,接下來又輸出空格,雙引號,最后輸出換行符。2.2.4 字符串常量在前面的HelloWorld程序中,程序中輸出的“Hello,
12、World”就是字符串常量,用雙引號括起來的形式顯示的,其值就是雙引號里面的字符串。所以字符串常量可以定義為在一對雙引號里的字符序列或轉(zhuǎn)義字符序列。比如“”、“ ”、“a”、“abc”、“abcn”等等。我們把稱之為空串,即一個不包含任意字符的字符串,而 我們稱之為空格串,是包含一個空格字符的字符串。二者不能等同。2.2.4 字符串常量比較a和a的不同。 書寫形式不能:字符串常量用雙引號,字符常量用單引號。 存儲空間不同:在內(nèi)存中,字符常量只占用一個存儲空間,而字符串存儲時必須有占用一個存儲空間的結(jié)束標記o,所以,a占用一個,而a占用兩個。 二者的操作功能也不相同:例如,字符常量可進行加減運算
13、,字符串常量不能。2.2.5 符號常量當某個常量引用起來比較復雜而又經(jīng)常要被用到時,可以將該常量定義為符號常量,也就是分配一個符號給這個常量,在以后的引用中,這個符號就代表了實際的常量。這種用一個指定的名字代表一個常量稱之為符號常量,即帶名字的常量。在C語言中允許將程序中的常量定義為一個標識符,這個標識符稱為符號常量。符號常量必須在使用前先定義,定義的格式為: #define 其中,通常使用大寫字母表示,可以是數(shù)值常量,也可以是字符常量。 2.2.5 符號常量一般情況下,符號常量定義命令要放在主函數(shù)main()之前。如:#define PI 3.14159表示是用符號PI代替3.14159。在
14、編譯之前,系統(tǒng)會自動把所有的PI替換成3.14159,也就是說編譯運行時系統(tǒng)中只有3.14159而沒有符號。2.2.5 符號常量【范例2-4】 使用符號常量計算圓的周長和面積。01 #define PI 3.14159/*定義符號常量PI的值為3.14159*/02 #include 03 int main(void)04 05 float r;06 printf(請輸入圓的半徑:);/*提示輸入圓的半徑*/07 scanf(%f,&r);/*讀取輸入的值*/08 printf(圓的周長為:%fn,2*PI*r);/*計算圓的周長并輸入*/09 printf(圓的面積為:%fn,PI*r*r)
15、;/*計算圓的面積并輸入*/10 return 0;11 2.2.5 符號常量由于我們在程序前面定義了符號常量PI的值為3.14159,所以經(jīng)過系統(tǒng)預處理,程序在編譯之前已經(jīng)將“2*PI*r”變?yōu)椤?*3.14159*r”,將“PI*r*r”變?yōu)椤?.14159*r*r”,然后經(jīng)過計算并輸出。代碼第1行的#define就是預處理命令。程序在編譯之前首先要對這些命令進行一番處理,在這里就是用真正的常量值取代符號。2.2.5 符號常量有的人可能會問,那既然在編譯時都已經(jīng)處理成常量,為什么還要定義符號常量。原因有兩個。 易于輸入,易于理解。在程序中輸入PI,我們可以清楚地與數(shù)學公式對應,且每次輸入時
16、相應的字符數(shù)少一些。 便于修改。此處如果想提高計算精度,如把PI的值改為 3.14159,我們只需修改預處理中的常量值,那么程序中不管你用到多少次,都會自動跟著修改。2.2.5 符號常量提 示: 符號常量不同于變量,它的值在其作用域內(nèi)不能改變,也不能被賦值。 習慣上,符號常量名用大寫英文標識符,而變量名用小寫英文標識符,以示區(qū)別。 定義符號常量的目的是為了提高程序的可讀性,便于程序的調(diào)試和修改。因此在定義符號常量名時,應盡量使其表達它所代表的常量的含義。 對程序中用雙引號括起來的字符串,即使與符號一樣,預處理時也不做替換。2.3 變量2.3.1 什么是變量2.3.2 變量的聲明2.3.3 變量
17、的定義2.3.4 變量的賦值和初始化2.3.1 什么是變量變量用于存儲程序中可以改變的數(shù)據(jù)。其實變量就像一個存放東西的抽屜,知道了抽屜的名字(變量名),也就能找到抽屜的位置(變量的存儲單元)以及抽屜里的東西(變量的值)等。當然,抽屜里存放的東西也是可以改變的,也就是說,變量里的值也是可以變化的。我們可以總結(jié)出變量的4個基本屬性: 變量名:一個符合規(guī)則的標識符。 變量類型:C語言中的數(shù)據(jù)類型或者是自定義的數(shù)據(jù)類型。 變量位置:數(shù)據(jù)的存儲空間位置。 變量值:數(shù)據(jù)存儲空間內(nèi)存放的值。程序編譯時會給每個變量分配存儲空間和位置,程序讀取數(shù)據(jù)的過程其實就是根據(jù)變量名查找內(nèi)存中相應的存儲空間,從其內(nèi)取值的過
18、程。2.3.1 什么是變量【范例2-5】 變量的簡單輸出。01 #include02 void main(void)03 04 int i=10;/*定義一個變量i并賦初值*/05 char ppt=a; /*定義一個char類型的變量ppt并賦初值*/06 printf(第1次輸出 i=%dn,i);/*輸出變量i的值*/07 i=20;/*給變量i賦值*/08 printf(第2次輸出 i=%dn,i);/*輸出變量i的值*/09 printf(第1次輸出 ppt=%cn,ppt);/*輸出變量ppt的值*/10 ppt=b;/*給變量ppt賦值*/11 printf(第2次輸出 ppt=
19、%cn,ppt);/*輸出變量ppt的值*/12 return 0;變量在使用前必須先進行聲明或定義,在這個程序中,變量i和ppt就是先進行的定義。而且變量i和ppt都進行了兩次賦值,可見,變量在程序運行中是可以改變它的值的。第5行和第7行是給變量賦初值的兩種方式,是變量的初始化。2.3.2 變量的聲明在大多數(shù)語言中,在使用一個變量之前都要對這個變量進行聲明,C語言同樣如此。那么,什么是變量的聲明呢?有什么作用呢?變量的聲明其實就是在程序運行前,告訴編譯器程序使用的變量,以及與這些變量相關(guān)的屬性,包括,變量的名稱,類型和長度等。這樣,在程序運行前,編輯器就可以知道怎么樣給變量分配內(nèi)存空間,可以
20、優(yōu)化程序。變量的聲明語句的形式如下:變量類型名 變量名2.3.2 變量的聲明變量的聲明包括變量類型名和變量名兩個部分。我們在看下面的例子:01 int num02 double area03 char ppt其中,int、double和char是變量類型名,num、area和ppt是變量名。其實,變量類型名也就是數(shù)據(jù)類型的一種,也就是變量num是int類型,area是double類型,ppt是char類型。變量類型名是C語言自帶的數(shù)據(jù)類型和用戶自定義的數(shù)據(jù)類型。C語言自帶的數(shù)據(jù)類型包括:整型、字符型、浮點型、枚舉型和指針類型等。2.3.2 變量的聲明變量名其實就是一個標識符,當然,標識符的命名
21、規(guī)則在此處同樣適用。除此之外,變量命名的時候還需要注意: 變量名區(qū)分大小寫,變量Num和num是兩個不同的變量。 變量的命名最好與實際應用有關(guān)聯(lián),例如:num一般表示數(shù)量,area就是表示面積等。 變量的命名必須在變量使用之前。2.3.2 變量的聲明【范例2-6】 驗證未聲明的標識符不可用。01 #include02 int main(void)03 04 printf(output undeclaredvar num=%dn,num);05 return 0;在此例子中,沒有對標識符num進行聲明就直接引用,編譯器不知道它是什么,所以,調(diào)試時,編譯器會報錯。2.3.2 變量的聲明【拓展訓練】
22、在第3句和第4句之間插入語句:01 int num=10;或者:01 int num;02 num=10;檢驗一下程序能否運行,是否還報錯。2.3.3 變量的定義我們首先來下面的2行代碼有什么不同? int i int i;大家應該已經(jīng)看到,這兩個例子的不同之處只在于第二句多了一個分號,這個看似簡單的一個分號所帶來的變化可是不可忽視的,第一句是變量的聲明語句,而第二句則是定義語句。變量的定義比變量的聲明多了一個分號,但是聲明只是告訴編輯器關(guān)于變量的屬性,而定義除此之外還給變量分配了所需的內(nèi)存空間。2.3.3 變量的定義變量定義的形式與聲明基本一致:變量類型名 變量名;比較下面語句的不同: in
23、t i; int i,j,k; int i,j,k=10; int i=10,j=20,k=20;第1句是定義了一個變量i,是最基本的變量定義語句,第2句是定義了3個變量,都是int類型的,這是定義語句的變形,等價于:int i;int j;int k;第3句是定義了3個int類型的變量,并給k賦了初值,等價于:int i;int j;int k;k=10;第4句是定義了3個int類型的變量,并都給它們賦了初值。2.3.3 變量的定義 形式不同:定義比聲明多了一個分號,就是一個完整的語句。 其作用的時間不同:聲明是在程序的編譯期起作用,而定義在程序的編譯期起聲明作用,在程序的運行期起為變量分配
24、內(nèi)存的作用。2.3.4 變量的賦值和初始化既然變量的值可以在程序中隨時改變,那么,變量必然可以多次賦值。我們把第一次的賦值行為稱為變量的初始化。也可以這么說,變量的初始化是賦值的特殊形式。那么,我們首先來看賦值。2.3.4 變量的賦值和初始化我們先來看賦值的例子:01 int i;02 double f;03 char a;04 i=10;05 f=3.4;06 a=b;在上面的語句中,第13行是變量的定義,46行是對變量的賦值。將10賦給了int類型的變量i;3.4賦給了double類型的變量f;字符b賦給了char類型的變量a。46行都是使用的賦值表達式。2.3.4 變量的賦值和初始化對變量賦值最主要的方式是使用賦值表達式,其形式如下:變量名=值;那么,變量的初始化語句的形式為:變量類型名 變量名=初始值;例如:01 int i=10;02 int j=i;03 double f=3.4+4.3;04 char a=b;其中,我們對變量類型名和變量名比較了解,那么就來看“=”和初始值;“=”為賦值操作符,其作用是將賦值操作符右邊的值賦給操作符左邊的變量。賦值操作符左邊是變量,右邊是初始值。其中,初始值可以是一個常量,如第1行的10和第4行的字符b;可以是一個變量,如第2行的i,意義
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)店美工試題庫及參考答案
- 吉林省長春市寬城區(qū)2023-2024學年七年級上學期期末考試數(shù)學試卷(含答案)
- 養(yǎng)老院老人心理咨詢師激勵制度
- 養(yǎng)老院老人康復理療服務質(zhì)量管理制度
- 《付出總有收獲》課件
- 《VFP系統(tǒng)準備》課件
- 房屋預售合同(2篇)
- 2024年特色農(nóng)產(chǎn)品種植配套農(nóng)機采購合同2篇
- 《生命的延續(xù)》課件
- 2025年黃山b2貨運資格證多少道題
- 生命科學前沿技術(shù)智慧樹知到答案章節(jié)測試2023年蘇州大學
- 2023屆高考英語一輪復習 語法填空:人物傳記類 專項練習10篇有答案
- 年5萬噸含錫廢料綜合回收再生利用項目環(huán)評報告
- 危險性較大的分部分項工程施工前安全生產(chǎn)條件核查表
- 2023年小學英語六年級英語英語王杯競賽試題
- 2023年四年級語文競賽小學四年級語文競賽試題雙版
- JJG 882-2019壓力變送器
- GM/T 0003.2-2012SM2橢圓曲線公鑰密碼算法第2部分:數(shù)字簽名算法
- GB/T 7286.2-1987金屬與非金屬材料光譜法向發(fā)射率試驗方法
- GB/T 35414-2017高原地區(qū)室內(nèi)空間彌散供氧(氧調(diào))要求
- GB/T 28426-2021鐵路大型養(yǎng)路機械鋼軌探傷車
評論
0/150
提交評論