版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、字符常量字符常量是指用一對(duì)單引號(hào)括起來的一個(gè)字符。如a,9,!。字符常量中的單引號(hào)只起定界作用并不表示字符本身。單引號(hào)中的字符不能是單引號(hào)()和反斜杠(),它們特有的表示法在轉(zhuǎn)義字符中介紹。在CC語言中,字符是按其所對(duì)應(yīng)的ASCII碼值來存儲(chǔ)的,一個(gè)字符占一個(gè)字節(jié)。例如:字符ASCII碼值(十進(jìn)制)!33048149957A65B66a97b98注意字符'9'和數(shù)字9的區(qū)別,前者是字符常量,后者是整型常量,它們的含義和在計(jì)算機(jī)中的存儲(chǔ)方式都截然不同。由于C語言中字符常量是按整數(shù)(short型)存儲(chǔ)的,所以字符常量可以像整數(shù)一樣在程序中參與相關(guān)的運(yùn)算。例如:'a'
2、32;/*執(zhí)行結(jié)果97-32=65*/'A'+32;/*執(zhí)行結(jié)果65+32=97*/'9'9;/*執(zhí)行結(jié)果57-9=48*/2.5.2字符串常量字符串常量是指用一對(duì)雙引號(hào)括起來的一串字符。雙引號(hào)只起定界作用,雙引號(hào)括起的字符串中不能是雙引號(hào)(")和反斜杠(),它們特有的表示法在轉(zhuǎn)義字符中介紹。例如:"China","Cprogram","YES&NO","33312-2341","A"等。C語言中,字符串常量在內(nèi)存中存儲(chǔ)時(shí),系統(tǒng)自動(dòng)在字符串的末尾
3、加一個(gè)“串結(jié)束標(biāo)志”,即ASCII碼值為0的字符NULL,常用0表示。因此在程序中,長(zhǎng)度為n個(gè)字符的字符串常量,在內(nèi)存中占有n+1個(gè)字節(jié)的存儲(chǔ)空間。例如,字符串China有5個(gè)字符,作為字符串常量"China"存儲(chǔ)于內(nèi)存中時(shí),共占6個(gè)字節(jié),系統(tǒng)自動(dòng)在后面加上NULL字符,其存儲(chǔ)形式為: 要特別注意字符串與字符串常量的區(qū)別,除了表示形式不同外,其存儲(chǔ)性質(zhì)也不相同,字符'A'只占1個(gè)字節(jié),而字符串常量"A"占2個(gè)字節(jié)。轉(zhuǎn)義字符轉(zhuǎn)義字符是C語言中表示字符的一種特殊形式。通常使用轉(zhuǎn)義字符表示ASCII碼字符集中不可打印的控制字符和特定功能的字符,
4、如用于表示字符常量的單撇號(hào)('),用于表示字符串常量的雙撇號(hào)(")和反斜杠()等。轉(zhuǎn)義字符用反斜杠后面跟一個(gè)字符或一個(gè)八進(jìn)制或十六進(jìn)制數(shù)表示。表2-4給出了C語言中常用的轉(zhuǎn)義字符。字符常量中使用單引號(hào)和反斜杠以及字符常量中使用雙引號(hào)和反斜杠時(shí),都必須使用轉(zhuǎn)義字符表示,即在這些字符前加上反斜杠。在C程序中使用轉(zhuǎn)義字符ddd或者xhh可以方便靈活地表示任意字符。ddd為斜杠后面跟三位八進(jìn)制數(shù),該三位八進(jìn)制數(shù)的值即為對(duì)應(yīng)的八進(jìn)制ASCII碼值。x后面跟兩位十六進(jìn)制數(shù),該兩位十六進(jìn)制數(shù)為對(duì)應(yīng)字符的十六進(jìn)制ASCII碼值。使用轉(zhuǎn)義字符時(shí)需要注意以下問題:1)轉(zhuǎn)義字符中只能使用小寫字母,
5、每個(gè)轉(zhuǎn)義字符只能看作一個(gè)字符。2)v垂直制表和f換頁符對(duì)屏幕沒有任何影響,但會(huì)影響打印機(jī)執(zhí)行響應(yīng)操作。3)在C程序中,使用不可打印字符時(shí),通常用轉(zhuǎn)義字符表示。符號(hào)常量C語言允許將程序中的常量定義為一個(gè)標(biāo)識(shí)符,稱為符號(hào)常量。符號(hào)常量一般使用大寫英文字母表示,以區(qū)別于一般用小寫字母表示的變量。符號(hào)常量在使用前必須先定義,定義的形式是:#define<符號(hào)常量名><常量>例如:#definePI3.14159266#defineTRUE11#definrFALSE00#defineSTAR'*'這里定義PI、TRUE、FLASE、STAR為符號(hào)常量,其值分別為
6、3.1415926,1,0,'*'。#define是C語言的預(yù)處理命令,它表示經(jīng)定義的符號(hào)常量在程序運(yùn)行前將由其對(duì)應(yīng)的常量替換。定義符號(hào)常量的目的是為了提高程序的可讀性,便于程序的調(diào)試和修改。因此在定義符號(hào)常量名時(shí),應(yīng)使其盡可能地表達(dá)它所代表的常量的含義,例如前面所定義的符號(hào)常量名PI(),表示圓周率3.1415926。此外,若要對(duì)一個(gè)程序中多次使用的符號(hào)常量的值進(jìn)行修改,只須對(duì)預(yù)處理命令中定義的常量值進(jìn)行修改即可。字符變量字符變量用來存放字符常量,注意只能存放一個(gè)字符,不要以為在一個(gè)字符變量中可以放字符串。字符變量的定義形式如下:charc1,c2;它表示c1和c2為字符變量
7、,各放一個(gè)字符。因此可以用下面語句對(duì)c1、c2賦值:c1='a'c2='b'c1、c2被指定為字符變量。但在第3行中,將整數(shù)97和98分別賦給c1和c2,它的作用相當(dāng)于以下兩個(gè)賦值語句:c1='a'c2='b'因?yàn)?#39;a'和'b'的ASCII碼為97和98。第4行將輸出兩個(gè)字符。"%c"是輸出字符的格式。程序輸出:它的作用是將兩個(gè)小寫字母轉(zhuǎn)換為大寫字母。因?yàn)?#39;a'的ASCII碼為97,而'A'為65,'b'為98,'B'
8、;為66。從ASCII代碼表中可以看到每一個(gè)小寫字母比大寫字母的ASCII碼大32。即'a'='A'+32。 C語言的內(nèi)部運(yùn)算符很豐富,運(yùn)算符是告訴編譯程序執(zhí)行特定算術(shù)或邏輯操作的符號(hào)。C語言有三大運(yùn)算符:算術(shù)、關(guān)系與邏輯、位操作。另外,C還有一些特殊的運(yùn)算符,用于完成一些特殊的任務(wù)。算術(shù)運(yùn)算符表2-5列出了C語言中允許的算術(shù)運(yùn)算符。在C語言中,運(yùn)算符“+”、“”、“*”和“/”的用法與大多數(shù)計(jì)算機(jī)語言的相同,幾乎可用于所有C語言內(nèi)定義的數(shù)據(jù)類型。當(dāng)“/”被用于整數(shù)或字符時(shí),結(jié)果取整。例如,在整數(shù)除法中,10/3=3。一元減法的實(shí)際效果等于用-1乘單個(gè)
9、操作數(shù),即任何數(shù)值前放置減號(hào)將改變其符號(hào)。模運(yùn)算符“%”在C語言中也同它在其它語言中的用法相同。切記,模運(yùn)算取整數(shù)除法的余數(shù),所以“%”不能用于float和double類型。 最后一行打印一個(gè)0和一個(gè)1,因?yàn)?/2整除時(shí)為0,余數(shù)為1,故1%2取余數(shù)1。自增和自減C語言中有兩個(gè)很有用的運(yùn)算符,通常在其它計(jì)算機(jī)語言中是找不到它們的自增和自減運(yùn)算符,+和-。運(yùn)算符“+”是操作數(shù)加1,而“-”是操作數(shù)減1,換句話說:x=x+1;同+x;x=x-1;同-x;自增和自減運(yùn)算符可用在操作數(shù)之前,也可放在其后,例如:x=x+1;可寫成+x;或x+;但在表達(dá)式中這兩種用法是有區(qū)別的。自增或自減運(yùn)算符在操作數(shù)之
10、前,C語言在引用操作數(shù)之前就先執(zhí)行加1或減1操作;運(yùn)算符在操作數(shù)之后,C語言就先引用操作數(shù)的值,而后再進(jìn)行加1或減1操作。請(qǐng)看下例:x=10;y=+x;此時(shí),y=11。如果程序改為:x=10;y=x+;則y=10。在這兩種情況下,x都被置為11,但區(qū)別在于設(shè)置的時(shí)刻,這種對(duì)自增和自減發(fā)生時(shí)刻的控制是非常有用的。在大多數(shù)C編譯程序中,為自增和自減操作生成的程序代碼比等價(jià)的賦值語句生成的代碼要快得多,所以盡可能采用加1或減1運(yùn)算符是一種好的選擇。下面是算術(shù)運(yùn)算符的優(yōu)先級(jí):最高+、-(一元減)*、/、%最低+、-編譯程序?qū)ν?jí)運(yùn)算符按從左到右的順序進(jìn)行計(jì)算。當(dāng)然,括號(hào)可改變計(jì)算順序。C語言處理括號(hào)的
11、方法與幾乎所有的計(jì)算機(jī)語言相同:強(qiáng)迫某個(gè)運(yùn)算或某組運(yùn)算的優(yōu)先級(jí)升高。2.6.3關(guān)系和邏輯運(yùn)算符關(guān)系運(yùn)算符中的“關(guān)系”二字指的是一個(gè)值與另一個(gè)值之間的關(guān)系,邏輯運(yùn)算符中的“邏輯”二字指的是連接關(guān)系的方式。因?yàn)殛P(guān)系和邏輯運(yùn)算符常在一起使用,所以將它們放在一起討論。關(guān)系和邏輯運(yùn)算符概念中的關(guān)鍵是True(真)和Flase(假)。C語言中,非0為True,0為Flase。使用關(guān)系或邏輯運(yùn)算符的表達(dá)式對(duì)Flase和Ture分別返回值0或1(見表2-6)。 表2-6給出于關(guān)系和邏輯運(yùn)算符,下面用1和0給出邏輯真值表。關(guān)系和邏輯運(yùn)算符的優(yōu)先級(jí)比算術(shù)運(yùn)算符低,即像表達(dá)式10>1+12的計(jì)算可以假定是對(duì)表
12、達(dá)式10>(1+12)的計(jì)算,當(dāng)然,該表達(dá)式的結(jié)果為Flase。在一個(gè)表達(dá)式中允許運(yùn)算的組合。例如:10>5&&!(10<9)|3<=4這一表達(dá)式的結(jié)果為True。下表給出了關(guān)系和邏輯運(yùn)算符的相對(duì)優(yōu)先級(jí):最高!>= <= !=&&最低|同算術(shù)表達(dá)式一樣,在關(guān)系或邏輯表達(dá)式中也使用括號(hào)來修改原計(jì)算順序。切記,所有關(guān)系和邏輯表達(dá)式產(chǎn)生的結(jié)果不是0就是1,所以下面的程序段不僅正確而且將在屏幕上打印數(shù)值1。int x;x=100;printf("%d",x>10);2.6.4位操作符與其它語言不同,C語言支持
13、全部的位操作符(BitwiseOperators)。因?yàn)镃語言的設(shè)計(jì)目的是取代匯編語言,所以它必須支持匯編語言所具有的運(yùn)算能力。位操作是對(duì)字節(jié)或字中的位(bit)進(jìn)行測(cè)試、置位或移位處理,這里字節(jié)或字是針對(duì)C標(biāo)準(zhǔn)中的char和int數(shù)據(jù)類型而言的。位操作不能用于float、double、longdouble、void或其它復(fù)雜類型。表2-7給出了位操作的操作符。位操作中的AND、OR和NOT(1的補(bǔ)碼)的真值表與邏輯運(yùn)算等價(jià),唯一不同的是位操作是逐位進(jìn)行運(yùn)算的。如表2-8所示,當(dāng)且僅當(dāng)一個(gè)操作數(shù)為True時(shí),異或的輸出為True,否則為Flase。位操作通常用于設(shè)備驅(qū)動(dòng)程序,例如調(diào)制解調(diào)器程序
14、、磁盤文件管理程序和打印機(jī)驅(qū)動(dòng)程序。這是因?yàn)槲徊僮骺善帘蔚裟承┪?,如奇偶校?yàn)位(奇偶校驗(yàn)位用于確保字節(jié)中的其它位不會(huì)發(fā)生錯(cuò)誤通常奇偶校驗(yàn)位是字節(jié)的最高位)。通常我們可把位操作AND作為關(guān)閉位的手段,這就是說兩個(gè)操作數(shù)中任一為0的位,其結(jié)果中對(duì)應(yīng)位置為0。例如,下面的函數(shù)通過調(diào)用函數(shù)read_modem(),從調(diào)制解調(diào)器端口讀入一個(gè)字符,并將奇偶校驗(yàn)位置成0。字節(jié)的位8是奇偶位,將該字節(jié)與一個(gè)位1到位7為1、位8為0的字節(jié)進(jìn)行與操作,可將該字節(jié)的奇偶校驗(yàn)位置成0。表達(dá)式ch&127正是將ch中每一位同127數(shù)字的對(duì)應(yīng)位進(jìn)行與操作,結(jié)果ch的位8被置成了0。在下面的例子中,假定ch接收到字
15、符"A"并且奇偶位已經(jīng)被置位。一般來說,位的AND、OR和XOR操作通過對(duì)操作數(shù)運(yùn)算,直接對(duì)結(jié)果變量的每一位分別處理。正是因?yàn)檫@一原因(還有其它一些原因),位操作通常不像關(guān)系和邏輯運(yùn)算符那樣用在條件語句中,我們可以用例子說明這一點(diǎn):假定X=7,那么x&&8為Ture(1),而x&8卻為Flase(0)。記住,關(guān)系和邏輯操作符結(jié)果不是0就是1。而相似的位操作通過相應(yīng)處理,結(jié)果可為任意值。換言之,位操作可以有0或1以外的其它值,而邏輯運(yùn)算符的計(jì)算結(jié)果總是0或1。移位操作符>>和<<將變量的各位按要求向或向左移動(dòng)。右移語句通常形式是
16、:variable>>右移位數(shù)左移語句是:variable<<左移位數(shù)當(dāng)某位從一端移出時(shí),另一端移入0(某些計(jì)算機(jī)是送1,詳細(xì)內(nèi)容請(qǐng)查閱相應(yīng)C編譯程序用戶手冊(cè))。切記:移位不同于循環(huán),從一端移出的位并不送回到另一端去,移去的位永遠(yuǎn)丟失了,同時(shí)在另一端補(bǔ)0。移位操作可對(duì)外部設(shè)備(如D/A轉(zhuǎn)換器)的輸入和狀態(tài)信息進(jìn)行譯碼,移位操作還可用于整數(shù)的快速乘除運(yùn)算。如表2-9所示(假定移位時(shí)補(bǔ)0),左移一位等效于乘2,而右移一位等效于除以2。每左移一位乘2,注意x<<2后,原x的信息已經(jīng)丟失了,因?yàn)橐晃灰呀?jīng)從一端出,每右移一位相當(dāng)于被2除,注意,乘后再除時(shí),除操作并不帶
17、回乘法時(shí)已經(jīng)丟掉的高位。反碼操作符為。的作用是將特定變量的各位狀態(tài)取反,即將所有的1位置成0,所有的0位置成1。位操作符經(jīng)常用在加密程序中,例如,若想生成一個(gè)不可讀磁盤文件時(shí),可以在文件上做一些位操作。最簡(jiǎn)單的方法是用下述方法,通過1的反碼運(yùn)算,將每個(gè)字節(jié)的每一位取反。原字節(jié) 00101100第一次取反碼 11010011第二次取反碼 00101100注意,對(duì)同一行進(jìn)行連續(xù)的兩次求反,總是得到原來的數(shù)字,所以第一次求反表示了字節(jié)的編碼,第二次求反進(jìn)行譯碼又得到了原來的值??梢杂孟旅娴暮瘮?shù)encode()對(duì)字符進(jìn)行編碼。 ?操作符C語言提供了一個(gè)可以代替某些if-then-else語句的簡(jiǎn)便易用
18、的操作符?。該操作符是三元的,其一般形式為:EXP1?EXE2:EXP33EXP1,EXP2和EXP3是表達(dá)式,注意冒號(hào)的用法和位置。操作符“?”作用是這樣的,在計(jì)算EXP1之后,如果數(shù)值為True,則計(jì)算EXP2,并將結(jié)果作為整個(gè)表達(dá)式的數(shù)值;如果EXP1的值為Flase,則計(jì)算EXP3,并以它的結(jié)果作為整個(gè)表達(dá)式的值,請(qǐng)看下例:x=10;y=x>9?100:200;例中,賦給y的數(shù)值是100,如果x被賦給比9小的值,y的值將為200,若用if-else語句改寫,有下面的等價(jià)程序:x=10;if(x>9)y=100;elsey=200;有關(guān)C語言中的其它條件語句將在第3章進(jìn)行討論。2.6.6 逗號(hào)操作符作為一個(gè)操作符,逗號(hào)把幾個(gè)表達(dá)式串在一起。逗號(hào)操作符的左側(cè)總是作為void(無值),這意味著其右邊表達(dá)式的值變?yōu)橐远禾?hào)分開的整個(gè)表達(dá)式的值。例如:x=(y=3,y+1);這行將3賦給y,然后
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《社會(huì)心理因素》課件
- 《電信業(yè)風(fēng)云》課件
- 寒假自習(xí)課 25春初中道德與法治八年級(jí)下冊(cè)教學(xué)課件 第二單元 第2課時(shí) 公民基本義務(wù)
- 《沙盤規(guī)則介紹》課件
- 《定價(jià)的基本策略》課件
- 班干部工作總結(jié)3篇
- 2023年學(xué)校志愿者心得體會(huì)字萬能-學(xué)校志愿者工作總結(jié)(5篇)
- 2023-2024年項(xiàng)目部安全培訓(xùn)考試題附答案(典型題)
- 畢業(yè)銷售實(shí)習(xí)報(bào)告模板匯編八篇
- 2023年項(xiàng)目部安全管理人員安全培訓(xùn)考試題及參考答案(模擬題)
- 偏身舞蹈癥的護(hù)理查房
- 抑郁障礙患者的溝通技巧課件
- 技術(shù)成果轉(zhuǎn)移案例分析報(bào)告
- 護(hù)理人才梯隊(duì)建設(shè)規(guī)劃方案
- 睡眠區(qū)布局設(shè)計(jì)打造舒適宜人的睡眠環(huán)境
- 建筑設(shè)計(jì)行業(yè)項(xiàng)目商業(yè)計(jì)劃書
- 慢性病防治健康教育知識(shí)講座
- 骶尾部藏毛疾病診治中國專家共識(shí)(2023版)
- 【高新技術(shù)企業(yè)所得稅稅務(wù)籌劃探析案例:以科大訊飛為例13000字(論文)】
- 幽門螺旋桿菌
- 智慧農(nóng)業(yè)利用技術(shù)提高農(nóng)業(yè)可持續(xù)發(fā)展的方案
評(píng)論
0/150
提交評(píng)論