第3章 基本數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式_第1頁(yè)
第3章 基本數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式_第2頁(yè)
第3章 基本數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式_第3頁(yè)
第3章 基本數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式_第4頁(yè)
第3章 基本數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式_第5頁(yè)
已閱讀5頁(yè),還剩80頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、安徽三聯(lián)學(xué)院 信息與通信技術(shù)系C C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)主講人:鄭嵐 安徽三聯(lián)學(xué)院 信息與通信技術(shù)系第三章第三章 基本數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式基本數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.1 C語(yǔ)言的數(shù)據(jù)類(lèi)型 C C語(yǔ)言是一種強(qiáng)類(lèi)型語(yǔ)言,程序在處理語(yǔ)言是一種強(qiáng)類(lèi)型語(yǔ)言,程序在處理數(shù)據(jù)之前,要求數(shù)據(jù)具有明確的數(shù)據(jù)類(lèi)型。數(shù)據(jù)之前,要求數(shù)據(jù)具有明確的數(shù)據(jù)類(lèi)型。所謂數(shù)據(jù)類(lèi)型是按被定義變量的性質(zhì)、表所謂數(shù)據(jù)類(lèi)型是按被定義變量的性質(zhì)、表示形式、占據(jù)存儲(chǔ)空間的多少、構(gòu)造特點(diǎn)示形式、占據(jù)存儲(chǔ)空間的多少、構(gòu)造特點(diǎn)來(lái)劃分的。來(lái)劃分的。C C語(yǔ)言支持的數(shù)據(jù)類(lèi)型非常豐富,語(yǔ)言支持的數(shù)據(jù)類(lèi)型非常豐富

2、,它包括:它包括:基本數(shù)據(jù)類(lèi)型基本數(shù)據(jù)類(lèi)型,構(gòu)造數(shù)據(jù)類(lèi)型構(gòu)造數(shù)據(jù)類(lèi)型,指針類(lèi)型指針類(lèi)型,空類(lèi)型空類(lèi)型及及定義類(lèi)型定義類(lèi)型五大類(lèi)。五大類(lèi)。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.1 C語(yǔ)言的數(shù)據(jù)類(lèi)型 數(shù)據(jù)是操作的對(duì)象數(shù)據(jù)是操作的對(duì)象 數(shù)據(jù)類(lèi)型是指數(shù)據(jù)的內(nèi)在表現(xiàn)形式數(shù)據(jù)類(lèi)型是指數(shù)據(jù)的內(nèi)在表現(xiàn)形式 代碼代碼 存儲(chǔ)存儲(chǔ) 運(yùn)算運(yùn)算其數(shù)據(jù)以什么代碼存儲(chǔ)其數(shù)據(jù)以什么代碼存儲(chǔ)怎么存儲(chǔ)、按多少字節(jié)來(lái)存儲(chǔ)怎么存儲(chǔ)、按多少字節(jié)來(lái)存儲(chǔ)不同類(lèi)型的數(shù)據(jù),可進(jìn)行的運(yùn)算也不同不同類(lèi)型的數(shù)據(jù),可進(jìn)行的運(yùn)算也不同安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.1 C語(yǔ)言的數(shù)據(jù)類(lèi)型 C 語(yǔ) 言數(shù)據(jù)類(lèi)型基 本數(shù)據(jù)類(lèi)型導(dǎo) 出數(shù)據(jù)類(lèi)型double(雙精度浮

3、點(diǎn)型)long(長(zhǎng)整型)char(字符類(lèi)型)整 型short(短整型)int(整型)浮點(diǎn)型float(單精度浮點(diǎn)型)long double(長(zhǎng)雙精度浮點(diǎn)型)void類(lèi)型用戶(hù)定制類(lèi)型T*(指針類(lèi)型)struct(結(jié)構(gòu)體類(lèi)型)union(共用體類(lèi)型)文件類(lèi)型enum(枚舉)函數(shù)類(lèi)型構(gòu)造類(lèi)型T(數(shù)組類(lèi)型)安徽三聯(lián)學(xué)院 信息與通信技術(shù)系C語(yǔ)言 符號(hào)集(字符集)C語(yǔ)言使用的基本符號(hào)共有如下語(yǔ)言使用的基本符號(hào)共有如下5種:種: 大寫(xiě)字母大寫(xiě)字母AZ 小寫(xiě)字母小寫(xiě)字母az 數(shù)字?jǐn)?shù)字09 下劃線(xiàn)下劃線(xiàn)_ 標(biāo)點(diǎn)符號(hào)和運(yùn)算符標(biāo)點(diǎn)符號(hào)和運(yùn)算符安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.2 標(biāo)識(shí)符與關(guān)鍵字1 1、標(biāo)識(shí)符、標(biāo)識(shí)符

4、 用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類(lèi)型名、文件名的有效字符序列。簡(jiǎn)單地說(shuō),標(biāo)類(lèi)型名、文件名的有效字符序列。簡(jiǎn)單地說(shuō),標(biāo)識(shí)符就是一個(gè)識(shí)符就是一個(gè)名字名字。規(guī)則:規(guī)則: 以字母(大小寫(xiě)皆可)或下劃線(xiàn)開(kāi)頭以字母(大小寫(xiě)皆可)或下劃線(xiàn)開(kāi)頭 隨后可跟若干(包括隨后可跟若干(包括0 0個(gè))字母、數(shù)字、下劃線(xiàn)個(gè))字母、數(shù)字、下劃線(xiàn) 標(biāo)識(shí)符長(zhǎng)度各系統(tǒng)不同,最好不要超過(guò)標(biāo)識(shí)符長(zhǎng)度各系統(tǒng)不同,最好不要超過(guò)8 8個(gè)字符個(gè)字符安徽三聯(lián)學(xué)院 信息與通信技術(shù)系下列哪些是合法的標(biāo)識(shí)符下列哪些是合法的標(biāo)識(shí)符? x 、y3、 _imax 、ELSE 、X 、A_to_B7

5、x 、int、#No、bad one、re-input注:注:C語(yǔ)言中區(qū)分大小寫(xiě)語(yǔ)言中區(qū)分大小寫(xiě) 合法合法不合法不合法數(shù)字開(kāi)頭數(shù)字開(kāi)頭系統(tǒng)保留字系統(tǒng)保留字非法符號(hào)非法符號(hào)中間有空格中間有空格非下劃線(xiàn)非下劃線(xiàn)安徽三聯(lián)學(xué)院 信息與通信技術(shù)系標(biāo)識(shí)符使用說(shuō)明(1 1) 標(biāo)準(zhǔn)標(biāo)準(zhǔn)C C不限制標(biāo)識(shí)符的長(zhǎng)度不限制標(biāo)識(shí)符的長(zhǎng)度( (字符個(gè)字符個(gè)數(shù)數(shù)) ),但它受各種版本的,但它受各種版本的C C 語(yǔ)言編譯系統(tǒng)限語(yǔ)言編譯系統(tǒng)限制,同時(shí)也受到具體機(jī)器的限制。例如在制,同時(shí)也受到具體機(jī)器的限制。例如在某版本某版本C C 中規(guī)定標(biāo)識(shí)符前八位有效,當(dāng)兩中規(guī)定標(biāo)識(shí)符前八位有效,當(dāng)兩個(gè)標(biāo)識(shí)符前八位相同時(shí),則被認(rèn)為是同一個(gè)標(biāo)

6、識(shí)符前八位相同時(shí),則被認(rèn)為是同一個(gè)標(biāo)識(shí)符。個(gè)標(biāo)識(shí)符。(2 2) 在標(biāo)識(shí)符中,大小寫(xiě)是有區(qū)別的。在標(biāo)識(shí)符中,大小寫(xiě)是有區(qū)別的。 安徽三聯(lián)學(xué)院 信息與通信技術(shù)系(3 3) 標(biāo)識(shí)符雖然可由程序員隨意定義,但標(biāo)識(shí)符雖然可由程序員隨意定義,但標(biāo)識(shí)符是用于標(biāo)識(shí)某個(gè)量的符號(hào)。因此,標(biāo)識(shí)符是用于標(biāo)識(shí)某個(gè)量的符號(hào)。因此,命名應(yīng)盡量有相應(yīng)的意義,以便閱讀理解,命名應(yīng)盡量有相應(yīng)的意義,以便閱讀理解,作到作到“顧名思義顧名思義”。 (4 4) 不能與不能與c c編譯系統(tǒng)已經(jīng)預(yù)定義的、具有編譯系統(tǒng)已經(jīng)預(yù)定義的、具有特殊用途的保留標(biāo)識(shí)符(即關(guān)鍵字)同名。特殊用途的保留標(biāo)識(shí)符(即關(guān)鍵字)同名。 安徽三聯(lián)學(xué)院 信息與通信技術(shù)

7、系2、關(guān)鍵字、關(guān)鍵字 也稱(chēng)保留字。是也稱(chēng)保留字。是C語(yǔ)言中具有特定含義,專(zhuān)門(mén)用語(yǔ)言中具有特定含義,專(zhuān)門(mén)用作語(yǔ)言特定成份的一類(lèi)標(biāo)識(shí)符。作語(yǔ)言特定成份的一類(lèi)標(biāo)識(shí)符。如如:main、int、float、define等等,具有含義后面介紹具有含義后面介紹注:注: 所有關(guān)鍵字都有固定含義,不能用作其他。所有關(guān)鍵字都有固定含義,不能用作其他。 所有的關(guān)鍵字都必須小寫(xiě)所有的關(guān)鍵字都必須小寫(xiě)如:如:else 與與 ELSE關(guān)鍵字關(guān)鍵字用戶(hù)定義的標(biāo)識(shí)符用戶(hù)定義的標(biāo)識(shí)符安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.3 常量 C C語(yǔ)言中存在著兩種表征數(shù)據(jù)的形式:常量和變量。語(yǔ)言中存在著兩種表征數(shù)據(jù)的形式:常量和變量。 C C

8、語(yǔ)言中,語(yǔ)言中,值不能被改變值不能被改變并且并且不用存放在內(nèi)存中的不用存放在內(nèi)存中的量量稱(chēng)為稱(chēng)為常量常量。 常量區(qū)分為不同類(lèi)型(書(shū)寫(xiě)形式或表現(xiàn)形式)常量區(qū)分為不同類(lèi)型(書(shū)寫(xiě)形式或表現(xiàn)形式) 如:如:12 12 整型常量整型常量 3.2 3.2 實(shí)型常量實(shí)型常量 a a 字符常量字符常量安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.3.1 整型常量 1 1整型常量即整常數(shù)整型常量即整常數(shù)l 十進(jìn)制整常數(shù):無(wú)前綴,數(shù)碼為十進(jìn)制整常數(shù):無(wú)前綴,數(shù)碼為0 09 9。如:如:123123、456456l 八進(jìn)制整常數(shù):必須以八進(jìn)制整常數(shù):必須以0 0開(kāi)頭,即以開(kāi)頭,即以0 0作前綴,數(shù)作前綴,數(shù)碼取值為碼取值為0

9、07 7。八進(jìn)制數(shù)通常是無(wú)符號(hào)數(shù)。八進(jìn)制數(shù)通常是無(wú)符號(hào)數(shù)。如:如:015015、01010101、236236( )、032A032A( )l 十六進(jìn)制整常數(shù):前綴為十六進(jìn)制整常數(shù):前綴為0X0X或或0 x0 x。其數(shù)碼取值為。其數(shù)碼取值為0-90-9,A-FA-F或或a-fa-f(不區(qū)分大小寫(xiě))。(不區(qū)分大小寫(xiě))。如:如:0 x120 x12、-0 x5B-0 x5B、 5A5A()、0X3H0X3H()注:程序中根據(jù)前綴來(lái)區(qū)分各種進(jìn)制數(shù)注:程序中根據(jù)前綴來(lái)區(qū)分各種進(jìn)制數(shù)安徽三聯(lián)學(xué)院 信息與通信技術(shù)系2 2整型常數(shù)的后綴整型常數(shù)的后綴 基本整型的長(zhǎng)度為基本整型的長(zhǎng)度為1616位。如果使用的數(shù)

10、超過(guò)位。如果使用的數(shù)超過(guò)了了1616位基本整型數(shù)據(jù)的數(shù)值表示范圍,就必須用位基本整型數(shù)據(jù)的數(shù)值表示范圍,就必須用長(zhǎng)整型長(zhǎng)整型數(shù)表示。數(shù)表示。l 長(zhǎng)整型數(shù)是用后綴長(zhǎng)整型數(shù)是用后綴“L L”或或“l(fā) l” l 整型的無(wú)符號(hào)數(shù)的后綴為整型的無(wú)符號(hào)數(shù)的后綴為“U U”或或“u u” 如:如:158L158L、158LU158LU(長(zhǎng)整型無(wú)符號(hào)整常數(shù))(長(zhǎng)整型無(wú)符號(hào)整常數(shù))注:注:158L158L和和158158在數(shù)值上無(wú)區(qū)別,但對(duì)在數(shù)值上無(wú)區(qū)別,但對(duì)158L158L,系統(tǒng),系統(tǒng)將為其分配將為其分配4 4個(gè)字節(jié)的存儲(chǔ)空間,而對(duì)個(gè)字節(jié)的存儲(chǔ)空間,而對(duì)158158,只分,只分配配2 2個(gè)字節(jié)的存儲(chǔ)空間個(gè)字節(jié)

11、的存儲(chǔ)空間。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.3.2 實(shí)型常量 實(shí)型常量即值為實(shí)數(shù)的常量,又稱(chēng)浮點(diǎn)數(shù)。實(shí)型常量即值為實(shí)數(shù)的常量,又稱(chēng)浮點(diǎn)數(shù)。表示方法有兩種:表示方法有兩種:l 十進(jìn)制數(shù)形式:數(shù)碼十進(jìn)制數(shù)形式:數(shù)碼0-90-9和小數(shù)點(diǎn)組成和小數(shù)點(diǎn)組成( (必須有小必須有小數(shù)點(diǎn)數(shù)點(diǎn)) )。 如:如:123.45123.45、0.00.0、0.130.13、-123.45-123.45注意注意300300和和300.0300.0的區(qū)別的區(qū)別整型整型實(shí)型實(shí)型安徽三聯(lián)學(xué)院 信息與通信技術(shù)系l 指數(shù)形式:指數(shù)表示法又稱(chēng)科學(xué)記數(shù)法。該表示指數(shù)形式:指數(shù)表示法又稱(chēng)科學(xué)記數(shù)法。該表示形式由十進(jìn)制數(shù),加階碼標(biāo)志形

12、式由十進(jìn)制數(shù),加階碼標(biāo)志“e e”或或“E E”組成。組成。如:如:.12345e2.12345e2、12345.0e-312345.0e-3 值均為值均為12.34512.345例:例:1 1的表示法可以為的表示法可以為1e01e0、0.1e10.1e1、10e-110e-1注:注: “e e”或或“E E”之前后必須有數(shù)字,之后的指數(shù)必之前后必須有數(shù)字,之后的指數(shù)必須為整數(shù),且不能插入空格。須為整數(shù),且不能插入空格。 .3e3.3e3、3e33e3、3.e33.e3(合法)(合法) 3e3e、e3e3、e0.3e0.3(不合法)(不合法)0.1234510212345.010-3安徽三聯(lián)學(xué)

13、院 信息與通信技術(shù)系3.3.3 字符型常量 1 1一般字符型常量一般字符型常量字符常量是用單引號(hào)括起來(lái)的一個(gè)字符(可打?。?。字符常量是用單引號(hào)括起來(lái)的一個(gè)字符(可打?。L攸c(diǎn):(1 1)字符常量只能用單引號(hào)括起來(lái),不能用雙引號(hào))字符常量只能用單引號(hào)括起來(lái),不能用雙引號(hào)或其它括號(hào)?;蚱渌ㄌ?hào)。 (2 2)字符常量只能是單個(gè)字符,不能是字符串。)字符常量只能是單個(gè)字符,不能是字符串。(3 3)字符可以是字符集中任意字符。)字符可以是字符集中任意字符。 如:如:x x、a a、# #、A A 安徽三聯(lián)學(xué)院 信息與通信技術(shù)系 2 2轉(zhuǎn)義字符轉(zhuǎn)義字符 轉(zhuǎn)義字符是一種特殊的字符常量。轉(zhuǎn)義字符以轉(zhuǎn)義字符是一

14、種特殊的字符常量。轉(zhuǎn)義字符以反斜線(xiàn)反斜線(xiàn)“ ”開(kāi)頭,后跟特定的一個(gè)或幾個(gè)字符。開(kāi)頭,后跟特定的一個(gè)或幾個(gè)字符。 轉(zhuǎn)義字符具有特定的含義,不同于字符原有的轉(zhuǎn)義字符具有特定的含義,不同于字符原有的意義,故稱(chēng)意義,故稱(chēng)“轉(zhuǎn)義轉(zhuǎn)義”字符。字符。 安徽三聯(lián)學(xué)院 信息與通信技術(shù)系常用的轉(zhuǎn)義字符及其含義轉(zhuǎn)義字符轉(zhuǎn)義字符轉(zhuǎn)義字符的意義轉(zhuǎn)義字符的意義ASCIIASCII代碼代碼nn回車(chē)換行回車(chē)換行1010tt橫向跳到下一制表位置橫向跳到下一制表位置9 9bb退格退格8 8rr回車(chē)回車(chē)1313ff走紙換頁(yè)走紙換頁(yè)1212反斜線(xiàn)符反斜線(xiàn)符9292單引號(hào)符單引號(hào)符3939 ”雙引號(hào)符雙引號(hào)符3434dddddd1 1

15、3 3位八進(jìn)制數(shù)所代表的字符位八進(jìn)制數(shù)所代表的字符xhhxhh1 12 2位十六進(jìn)制數(shù)所代表的字符位十六進(jìn)制數(shù)所代表的字符輸出輸出格式格式控制控制輸出輸出字符字符安徽三聯(lián)學(xué)院 信息與通信技術(shù)系注:轉(zhuǎn)義字符實(shí)際上作為一個(gè)字符來(lái)對(duì)待,但如果注:轉(zhuǎn)義字符實(shí)際上作為一個(gè)字符來(lái)對(duì)待,但如果反斜線(xiàn)反斜線(xiàn)“ ”后的字符和它不構(gòu)成轉(zhuǎn)義字符,則后的字符和它不構(gòu)成轉(zhuǎn)義字符,則“ ”不起轉(zhuǎn)義作用而將被忽略。不起轉(zhuǎn)義作用而將被忽略。例:(例:(1) printf(“ANbcnDEFn”) (2) printf(“tabrcdnefghx”)ANbcDEFcd abefghx安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.3.4 字

16、符串常量 字符串常量是由一對(duì)雙引號(hào)括起來(lái)的字符序列。字符串常量是由一對(duì)雙引號(hào)括起來(lái)的字符序列。如:如:“I am a studentI am a student”、 “X X”、“ ”注:雙引號(hào)注:雙引號(hào)( (“ ”) )只充當(dāng)字符串的界定符,而不是字只充當(dāng)字符串的界定符,而不是字符串的一部分,所以,如果要在字符串中表示符串的一部分,所以,如果要在字符串中表示雙引號(hào),則應(yīng)使用轉(zhuǎn)義字符雙引號(hào),則應(yīng)使用轉(zhuǎn)義字符 ”來(lái)表示。來(lái)表示。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系字符串常量和字符常量的區(qū)別:(1 1)字符常量由單引號(hào)括起來(lái),字符串常量由雙引)字符常量由單引號(hào)括起來(lái),字符串常量由雙引號(hào)括起來(lái)。號(hào)括起來(lái)。

17、(2 2)字符常量只能是單個(gè)字符,字符串常量則可以)字符常量只能是單個(gè)字符,字符串常量則可以含一個(gè)或多個(gè)字符。含一個(gè)或多個(gè)字符。 (3 3)可以把一個(gè)字符常量賦予一個(gè)字符變量,但不)可以把一個(gè)字符常量賦予一個(gè)字符變量,但不能把一個(gè)字符串常量賦予一個(gè)字符變量。能把一個(gè)字符串常量賦予一個(gè)字符變量。 (4 4)字符常量占一個(gè)字節(jié)的內(nèi)存空間。字符串常量)字符常量占一個(gè)字節(jié)的內(nèi)存空間。字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字節(jié)數(shù)加占的內(nèi)存字節(jié)數(shù)等于字符串中字節(jié)數(shù)加1 1。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.3.5 符號(hào)常量 用一個(gè)標(biāo)識(shí)符來(lái)表示一個(gè)常量,稱(chēng)之為符號(hào)常量。用一個(gè)標(biāo)識(shí)符來(lái)表示一個(gè)常量,稱(chēng)之為符號(hào)常

18、量。符號(hào)常量在使用之前必須先定義,其一般形式為:符號(hào)常量在使用之前必須先定義,其一般形式為: #define 注:符號(hào)常量與變量不同,它的值在其作用域內(nèi)不注:符號(hào)常量與變量不同,它的值在其作用域內(nèi)不能改變,也不能再被賦值。能改變,也不能再被賦值。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系#include #define PRICE 30main() int num,total; num=10; total=num* PRICE; printf(“total=%d”,total); 程序運(yùn)行結(jié)果:total=300 安徽三聯(lián)學(xué)院 信息與通信技術(shù)系 printf函數(shù)簡(jiǎn)單介紹 printfprintf首先對(duì)格式

19、串從左向右掃描,當(dāng)遇到首先對(duì)格式串從左向右掃描,當(dāng)遇到可顯示字符時(shí)就在終端上原樣輸出,當(dāng)遇到控制可顯示字符時(shí)就在終端上原樣輸出,當(dāng)遇到控制字符(如字符(如nn、響鈴符等)就產(chǎn)生相應(yīng)的動(dòng)作,、響鈴符等)就產(chǎn)生相應(yīng)的動(dòng)作,(換行、響鈴等)當(dāng)遇到轉(zhuǎn)換符時(shí),就將后面的(換行、響鈴等)當(dāng)遇到轉(zhuǎn)換符時(shí),就將后面的實(shí)參依次換轉(zhuǎn)換符的要求轉(zhuǎn)換并輸出。實(shí)參依次換轉(zhuǎn)換符的要求轉(zhuǎn)換并輸出。 常用轉(zhuǎn)換符(格式說(shuō)明符):常用轉(zhuǎn)換符(格式說(shuō)明符):%d %d 十進(jìn)制整十進(jìn)制整型、型、%c %c 字符型、字符型、%f %f 浮點(diǎn)型、浮點(diǎn)型、%s %s 字符串型。字符串型。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.4 變量 其值可以

20、改變的量稱(chēng)為變量。其值可以改變的量稱(chēng)為變量。用標(biāo)識(shí)符(變量名)表示用標(biāo)識(shí)符(變量名)表示,在內(nèi)存中占一定存儲(chǔ)單元在內(nèi)存中占一定存儲(chǔ)單元變量具有三要素:名字、類(lèi)型和值。變量具有三要素:名字、類(lèi)型和值。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.4.1 變量的定義 變量在使用之前必須進(jìn)行定義變量在使用之前必須進(jìn)行定義即為每個(gè)變即為每個(gè)變量取一個(gè)名稱(chēng)(變量名),同時(shí)規(guī)定它的數(shù)據(jù)量取一個(gè)名稱(chēng)(變量名),同時(shí)規(guī)定它的數(shù)據(jù)類(lèi)型,以便編譯時(shí)根據(jù)數(shù)據(jù)類(lèi)型分配存儲(chǔ)空間。類(lèi)型,以便編譯時(shí)根據(jù)數(shù)據(jù)類(lèi)型分配存儲(chǔ)空間。變量定義的一般格式:變量定義的一般格式: 如:如:int i,j,imax int i,j,imax char

21、c1,c2,s char c1,c2,s注:見(jiàn)名知意注:見(jiàn)名知意 先定義后使用先定義后使用 習(xí)慣上,符號(hào)常量名用大寫(xiě),變量名用小寫(xiě),習(xí)慣上,符號(hào)常量名用大寫(xiě),變量名用小寫(xiě),以示區(qū)別以示區(qū)別安徽三聯(lián)學(xué)院 信息與通信技術(shù)系變量的類(lèi)型1.整型變量整型變量 例:例:int a , b編譯系統(tǒng)為編譯系統(tǒng)為a和和b各分配兩個(gè)字節(jié),按整數(shù)方式存放各分配兩個(gè)字節(jié),按整數(shù)方式存放數(shù)據(jù)在內(nèi)存中以二進(jìn)制數(shù)據(jù)在內(nèi)存中以二進(jìn)制補(bǔ)碼補(bǔ)碼表示:表示:00 00 00 00 00 00 10 10-327683276711 11 11 11 11 11 01 10符號(hào)位+10-10補(bǔ)碼安徽三聯(lián)學(xué)院 信息與通信技術(shù)系 整型變量

22、根據(jù)其數(shù)值范圍,可分為三類(lèi):整型變量根據(jù)其數(shù)值范圍,可分為三類(lèi): 基本整型(基本整型(int)2字節(jié)字節(jié) 短整型(短整型(short int)2字節(jié)字節(jié) 長(zhǎng)整型(長(zhǎng)整型(long int)4字節(jié)字節(jié) 為了充分利用變量的表示范圍,又可分為:為了充分利用變量的表示范圍,又可分為: 有符號(hào)數(shù)(有符號(hào)數(shù)(signed)可省略)可省略 無(wú)符號(hào)數(shù)(無(wú)符號(hào)數(shù)(unsigned) 兩種分類(lèi)結(jié)合后,一共有六種整型變量。兩種分類(lèi)結(jié)合后,一共有六種整型變量。例:例: int i,sumint i,sum;基本整型;基本整型 short s,sum;short s,sum;短整型短整型 long x,ylong x,

23、y;長(zhǎng)整型;長(zhǎng)整型 unsigned u,sumunsigned u,sum;無(wú)符號(hào)整型;無(wú)符號(hào)整型 unsigned short u,sumunsigned short u,sum;無(wú)符號(hào)短整型;無(wú)符號(hào)短整型在微型機(jī)中int、short int長(zhǎng)度相同。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系2.2.實(shí)型變量(取值范圍和值的精度與機(jī)器有關(guān))實(shí)型變量(取值范圍和值的精度與機(jī)器有關(guān)) 單精度(單精度(floatfloat)占)占4 4個(gè)字節(jié),個(gè)字節(jié),7 7位有效數(shù)字位有效數(shù)字 雙精度(雙精度(doubledouble)占)占8 8個(gè)字節(jié),個(gè)字節(jié),15151616位有效數(shù)位有效數(shù)字字定義方法:定義方法:fl

24、oat x, yfloat x, y; double a ,b ,cdouble a ,b ,c;注:實(shí)型,缺省為注:實(shí)型,缺省為doubledouble; 后綴后綴f f 或或F F,為,為floatfloat型;型; 后綴后綴l l 或或L L,為,為long doublelong double型(使用很少)。型(使用很少)。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.3.字符變量字符變量 用來(lái)存放字符,且只能存放一個(gè)字符。用來(lái)存放字符,且只能存放一個(gè)字符。定義方法:定義方法:char c1,c2char c1,c2; unsigned char c3,c4unsigned char c3,c4;賦

25、值方法:賦值方法:c1=c1=a a; c2=c2=101101; c3=0 xffc3=0 xff; c4=c4=377377;安徽三聯(lián)學(xué)院 信息與通信技術(shù)系(3 3)存儲(chǔ))存儲(chǔ)將一個(gè)字符常量存放到一個(gè)字符變量中是將該字符的相應(yīng)將一個(gè)字符常量存放到一個(gè)字符變量中是將該字符的相應(yīng)的的ASCASC碼存放到存儲(chǔ)單元中碼存放到存儲(chǔ)單元中如下例,內(nèi)存中如下例,內(nèi)存中c1、c2的存放形式為:的存放形式為:c1c2字符數(shù)據(jù)與整型數(shù)據(jù)可以相互賦值字符數(shù)據(jù)與整型數(shù)據(jù)可以相互賦值 字符數(shù)據(jù)可以用字符形式輸出,字符數(shù)據(jù)可以用字符形式輸出,也可以用整型數(shù)形式輸出。也可以用整型數(shù)形式輸出。0 1 1 0 0 0 0

26、1#includevoid main()char c1,c2; c1=a;c2=b; printf(“%c %cn”,c1,c2); c1=97;c2=98; printf(“%c %cn”,c1,c2);輸出結(jié)果:a ba b0 1 1 0 0 0 1 0#includevoid main()int i; char c; i=a; c=97; printf(“%c,%dn”,c,c); printf(“%c,%dn”,i,i);輸出結(jié)果:a,97a,97安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.4.2 變量的初始化 1 1變量初始化變量初始化 在程序中常常需要對(duì)變量賦初值,以便使用在程序中常常需要對(duì)

27、變量賦初值,以便使用變量。語(yǔ)言程序中可有多種方法為變量提供初變量。語(yǔ)言程序中可有多種方法為變量提供初值。本小節(jié)先介紹在作變量定義的同時(shí)給變量值。本小節(jié)先介紹在作變量定義的同時(shí)給變量賦以初值的方法。這種方法稱(chēng)為初始化。在變賦以初值的方法。這種方法稱(chēng)為初始化。在變量定義中賦初值的一般形式為:量定義中賦初值的一般形式為: 類(lèi)型說(shuō)明符 變量1=值1,變量2=值2,;安徽三聯(lián)學(xué)院 信息與通信技術(shù)系【例例】 int a=68 int a=68;/ /* *指定指定a a為整型變量,初值為為整型變量,初值為6868* */ / float b,c,d=7.9 float b,c,d=7.9; / /* *b

28、 b,c c,d d為單精度實(shí)型變?yōu)閱尉葘?shí)型變量,只對(duì)量,只對(duì)d d初始化,其值為初始化,其值為7.97.9* */ / char c= char c=a a; int i,j,k=5int i,j,k=5; / /* *只對(duì)只對(duì)k k賦值,賦值,i i、j j 值不確定值不確定* */ / int x=1,y=1,z=1 int x=1,y=1,z=1;/ /* *對(duì)幾個(gè)變量賦相同值對(duì)幾個(gè)變量賦相同值* */ / 安徽三聯(lián)學(xué)院 信息與通信技術(shù)系2 2變量的賦值變量的賦值 賦值是將一個(gè)數(shù)值送給一個(gè)變量,改變這賦值是將一個(gè)數(shù)值送給一個(gè)變量,改變這個(gè)變量已有的值為所賦的值,變量?jī)?nèi)保存的是個(gè)變量已

29、有的值為所賦的值,變量?jī)?nèi)保存的是最后一次賦的值。最后一次賦的值。 賦值是使用賦值表達(dá)式進(jìn)行的。賦初值是賦值是使用賦值表達(dá)式進(jìn)行的。賦初值是在定義或說(shuō)明變量時(shí),將一個(gè)數(shù)值送給變量的,在定義或說(shuō)明變量時(shí),將一個(gè)數(shù)值送給變量的,使變量被定義后便有值,直到被改變?yōu)橹?。使變量被定義后便有值,直到被改變?yōu)橹?。安徽三?lián)學(xué)院 信息與通信技術(shù)系【例例】: 變量的定義和賦值變量的定義和賦值#include #include main()main() int a; char c= int a; char c=b b,bell=,bell=007007; ; float x=3.25; a=65; float x=3

30、.25; a=65; printf( printf(“%c,%cn%c,%cn”,c,c-1); ,c,c-1); printf( printf(“%d,%c,%cn%d,%c,%cn”,c,a,bell);,c,a,bell); printf( printf(“%.2f,%fn%.2f,%fn”,x,x+x);,x,x+x);安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.4.2 變量的初始化 3 3變量的地址變量的地址 在使用一個(gè)變量之前,要先對(duì)它進(jìn)行定義,在使用一個(gè)變量之前,要先對(duì)它進(jìn)行定義,以便編譯程序?yàn)槠浞峙鋬?nèi)存單元。也就是說(shuō),以便編譯程序?yàn)槠浞峙鋬?nèi)存單元。也就是說(shuō),在定義了一個(gè)變量后,在內(nèi)存中會(huì)

31、分配相應(yīng)的在定義了一個(gè)變量后,在內(nèi)存中會(huì)分配相應(yīng)的存儲(chǔ)單元,將變量的值存儲(chǔ)到該單元中。存儲(chǔ)單元,將變量的值存儲(chǔ)到該單元中。 注意區(qū)分注意區(qū)分變量名變量名與與變量值變量值的概念。的概念。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系 int x; float y; x=3; y=3.14159 經(jīng)編譯后它們?cè)趦?nèi)存中的存放如圖所示。圖經(jīng)編譯后它們?cè)趦?nèi)存中的存放如圖所示。圖中,右側(cè)是中,右側(cè)是變量的名稱(chēng)變量的名稱(chēng);中間是;中間是變量的值變量的值,也就,也就是內(nèi)存單元中的內(nèi)容;左側(cè)是內(nèi)存單元的編號(hào),是內(nèi)存單元中的內(nèi)容;左側(cè)是內(nèi)存單元的編號(hào),也就是內(nèi)存單元的地址,即也就是內(nèi)存單元的地址,即變量的地址變量的地址。安徽三聯(lián)

32、學(xué)院 信息與通信技術(shù)系3.5 運(yùn)算符及其表達(dá)式 語(yǔ)言中運(yùn)算符和表達(dá)式數(shù)量之多,豐富語(yǔ)言中運(yùn)算符和表達(dá)式數(shù)量之多,豐富的運(yùn)算符和表達(dá)式使語(yǔ)言功能十分完善。除的運(yùn)算符和表達(dá)式使語(yǔ)言功能十分完善。除了控制語(yǔ)句和輸入輸出以外的幾乎所有的基本了控制語(yǔ)句和輸入輸出以外的幾乎所有的基本操作都作為運(yùn)算符處理操作都作為運(yùn)算符處理 。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.5 運(yùn)算符及其表達(dá)式 運(yùn)算符運(yùn)算符 用來(lái)表示各種運(yùn)算的符號(hào)用來(lái)表示各種運(yùn)算的符號(hào) 表達(dá)式表達(dá)式 使用運(yùn)算符把使用運(yùn)算符把運(yùn)算對(duì)象運(yùn)算對(duì)象連接起來(lái)組成的句子連接起來(lái)組成的句子 簡(jiǎn)單語(yǔ)句簡(jiǎn)單語(yǔ)句 C C語(yǔ)言中,在表達(dá)式的末尾加上一個(gè)分號(hào)語(yǔ)言中,在表達(dá)式的

33、末尾加上一個(gè)分號(hào)“; ;”就構(gòu)成了簡(jiǎn)單語(yǔ)句。就構(gòu)成了簡(jiǎn)單語(yǔ)句。包括常量、變量、包括常量、變量、函數(shù)等函數(shù)等安徽三聯(lián)學(xué)院 信息與通信技術(shù)系運(yùn)算符的特點(diǎn) 優(yōu)先級(jí)優(yōu)先級(jí) 在表達(dá)式求值時(shí),先按運(yùn)算符的優(yōu)先級(jí)別高低次序執(zhí)在表達(dá)式求值時(shí),先按運(yùn)算符的優(yōu)先級(jí)別高低次序執(zhí)行,例如先乘除后加減。行,例如先乘除后加減。 結(jié)合性結(jié)合性 在表達(dá)式中,各運(yùn)算量參與運(yùn)算的先后順序不僅要遵在表達(dá)式中,各運(yùn)算量參與運(yùn)算的先后順序不僅要遵守運(yùn)算符優(yōu)先級(jí)別的規(guī)定,還要受運(yùn)算符結(jié)合性的制約,守運(yùn)算符優(yōu)先級(jí)別的規(guī)定,還要受運(yùn)算符結(jié)合性的制約,以便確定是自左向右進(jìn)行運(yùn)算,還是自右向左進(jìn)行運(yùn)算。以便確定是自左向右進(jìn)行運(yùn)算,還是自右向左進(jìn)

34、行運(yùn)算。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.5.13.5.1算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式 基本的算術(shù)運(yùn)算符基本的算術(shù)運(yùn)算符操作符操作符作用作用運(yùn)算目數(shù)運(yùn)算目數(shù)結(jié)合方向結(jié)合方向例子例子+ +加加雙目加法,雙目加法,一目取正一目取正加自左至右,取正自右至左加自左至右,取正自右至左a+ba+b,5+25+2,+5+5減減雙目減法,雙目減法,一目取負(fù)一目取負(fù)減自左至右,取負(fù)自右至左減自左至右,取負(fù)自右至左5-35-3,x-yx-y,-5-5* *乘乘雙目運(yùn)算雙目運(yùn)算自左至右自左至右x x* *y y,3 3* *5 5/ /除除雙目運(yùn)算雙目運(yùn)算自左至右自左至右x/yx/y,20/520/

35、5% %取模取模雙目運(yùn)算雙目運(yùn)算自左至右自左至右5%35%3,-7%3-7%3-減減1 1單目運(yùn)算單目運(yùn)算自右至左自右至左+i+i,i+i+加加1 1單目運(yùn)算單目運(yùn)算自右至左自右至左-i,i-i,i-安徽三聯(lián)學(xué)院 信息與通信技術(shù)系使用算術(shù)運(yùn)算符要注意幾點(diǎn)使用算術(shù)運(yùn)算符要注意幾點(diǎn)(1 1)兩整數(shù)相除,結(jié)果為整數(shù),如)兩整數(shù)相除,結(jié)果為整數(shù),如5/35/3結(jié)果為結(jié)果為1 1;若除數(shù)、被除數(shù)中有一個(gè)是負(fù)數(shù),則若除數(shù)、被除數(shù)中有一個(gè)是負(fù)數(shù),則“向零取整向零取整”,如如 -7/4= -1-7/4= -1(2 2)除數(shù)、被除數(shù)中有一個(gè)是實(shí)數(shù)()除數(shù)、被除數(shù)中有一個(gè)是實(shí)數(shù)(floatfloat、double

36、double)結(jié)果為結(jié)果為doubledouble型。型。#include void main() printf(nn%d,%dn,20/7,-20/7); printf(%f,%fn,20.0/7,-20.0/7); 程序運(yùn)行結(jié)果:程序運(yùn)行結(jié)果:2,-22.857143,-2.857143安徽三聯(lián)學(xué)院 信息與通信技術(shù)系(3 3)取模運(yùn)算要求兩個(gè)操作數(shù)均為整型,運(yùn)算結(jié)果)取模運(yùn)算要求兩個(gè)操作數(shù)均為整型,運(yùn)算結(jié)果的符號(hào)同被除數(shù)。的符號(hào)同被除數(shù)。#include void main() printf(%dn,100%3); printf(%dn”,-100%3); 程序運(yùn)行結(jié)果:程序運(yùn)行結(jié)果:1-

37、1安徽三聯(lián)學(xué)院 信息與通信技術(shù)系(4 4)自增、自減運(yùn)算符只能用于變量,結(jié)合方向?yàn)樽杂抑粒┳栽觥⒆詼p運(yùn)算符只能用于變量,結(jié)合方向?yàn)樽杂抑磷螅瑑?yōu)先級(jí)高于基本算術(shù)運(yùn)算符。如:左,優(yōu)先級(jí)高于基本算術(shù)運(yùn)算符。如:-i+-i+相當(dāng)于相當(dāng)于-(i+)-(i+)#includevoid main() int i=8; printf(%dn,+i); printf(%dn,-i); printf(%dn,i+); printf(%dn,i-); printf(%dn,-i+); printf(%dn,-i-); 程序運(yùn)行結(jié)果:程序運(yùn)行結(jié)果:9889-8-9 輸出值輸出值 i變量值變量值 9 9 8 8 8 9

38、 9 8 -8 9 -9 8安徽三聯(lián)學(xué)院 信息與通信技術(shù)系#includevoid main() int i=0,j; j=i+; printf(%d,%dn, i,j); i=0; j=+i; printf(%d ,%dn, i,j); 程序運(yùn)行結(jié)果:程序運(yùn)行結(jié)果:1,01,1注意區(qū)分:注意區(qū)分:j=i+1;j=+i;安徽三聯(lián)學(xué)院 信息與通信技術(shù)系 C C編譯程序在處理時(shí)盡可能多的自左至右將若干個(gè)編譯程序在處理時(shí)盡可能多的自左至右將若干個(gè)字符組成一個(gè)運(yùn)算符(在處理標(biāo)識(shí)符、關(guān)鍵字也字符組成一個(gè)運(yùn)算符(在處理標(biāo)識(shí)符、關(guān)鍵字也按同一原則處理),如,按同一原則處理),如,a+ba+b,將解釋為(,將

39、解釋為(a+a+)+b+b。為避免誤解,最好不要寫(xiě)成前一種,而寫(xiě)成。為避免誤解,最好不要寫(xiě)成前一種,而寫(xiě)成后一種帶括號(hào)的形式。后一種帶括號(hào)的形式。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.5.2 賦值運(yùn)算符和賦值表達(dá)式 1.1.賦值運(yùn)算符賦值運(yùn)算符 程序設(shè)計(jì)中,賦值運(yùn)算符是使用頻繁的運(yùn)算程序設(shè)計(jì)中,賦值運(yùn)算符是使用頻繁的運(yùn)算符。所謂,賦值就是將一個(gè)數(shù)據(jù)值存儲(chǔ)到一個(gè)符。所謂,賦值就是將一個(gè)數(shù)據(jù)值存儲(chǔ)到一個(gè)變量中,賦值運(yùn)算符記為變量中,賦值運(yùn)算符記為“= =”。 2.2.賦值表達(dá)式賦值表達(dá)式 由賦值運(yùn)算符由賦值運(yùn)算符“= = ”將一個(gè)變量和表達(dá)式連將一個(gè)變量和表達(dá)式連接的式子稱(chēng)為賦值表達(dá)式。接的式子稱(chēng)為賦

40、值表達(dá)式。 其一般形式為:其一般形式為:變量表達(dá)式安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.5.2 賦值運(yùn)算符和賦值表達(dá)式說(shuō)明:(1 1)不同于數(shù)學(xué)中的等式,如)不同于數(shù)學(xué)中的等式,如x=yx=y和和y=x;y=x; “= =”左邊必須是變量。左邊必須是變量。 (2 2)賦值表達(dá)式也應(yīng)該有值,它的值就是被賦值)賦值表達(dá)式也應(yīng)該有值,它的值就是被賦值的變量的值,其結(jié)果類(lèi)型由賦值運(yùn)算符的變量的值,其結(jié)果類(lèi)型由賦值運(yùn)算符“左值左值”的類(lèi)型決定。的類(lèi)型決定。(3 3)賦值運(yùn)算符具有)賦值運(yùn)算符具有右結(jié)合性右結(jié)合性賦值運(yùn)算可以連續(xù)賦值運(yùn)算可以連續(xù)進(jìn)行。進(jìn)行。 安徽三聯(lián)學(xué)院 信息與通信技術(shù)系(4 4)賦值運(yùn)算符的

41、優(yōu)先級(jí)低于算術(shù)運(yùn)算符的優(yōu)先級(jí)。)賦值運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符的優(yōu)先級(jí)。例:例:a=(b=4)+(c=6) a=(b=4)+(c=6) 結(jié)果結(jié)果a a值為值為1010 a=(b=10)/(c=2) a=(b=10)/(c=2) 結(jié)果結(jié)果a a值為值為5 5 (5 5)將賦值表達(dá)式作為表達(dá)式的一種,不僅可以出)將賦值表達(dá)式作為表達(dá)式的一種,不僅可以出現(xiàn)在賦值語(yǔ)句中,而且可以出現(xiàn)在其他語(yǔ)句(輸現(xiàn)在賦值語(yǔ)句中,而且可以出現(xiàn)在其他語(yǔ)句(輸出語(yǔ)句,循環(huán)語(yǔ)句)中。出語(yǔ)句,循環(huán)語(yǔ)句)中。(6 6)或賦值類(lèi)型與變量類(lèi)型不符,依變量類(lèi)型強(qiáng)制)或賦值類(lèi)型與變量類(lèi)型不符,依變量類(lèi)型強(qiáng)制轉(zhuǎn)換,如:實(shí)型數(shù)據(jù)賦值給整型

42、變量時(shí),舍去實(shí)轉(zhuǎn)換,如:實(shí)型數(shù)據(jù)賦值給整型變量時(shí),舍去實(shí)數(shù)的小數(shù)部分。數(shù)的小數(shù)部分。 具體見(jiàn)具體見(jiàn)3.7。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.5.2 賦值運(yùn)算符和賦值表達(dá)式 3.3.復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符 在賦值符在賦值符“= =”之前加上其它二目運(yùn)算符可構(gòu)之前加上其它二目運(yùn)算符可構(gòu)成復(fù)合賦值符。成復(fù)合賦值符。 如:如:a+=3 a+=3 等價(jià)于等價(jià)于 a=a+3a=a+3 x x* *=y+38 =y+38 等價(jià)于等價(jià)于 x=xx=x* *(y+38) (y+38) 注:有小括號(hào)注:有小括號(hào) 把把“運(yùn)算運(yùn)算”和和“賦值賦值”兩個(gè)操作結(jié)合在一起,兩個(gè)操作結(jié)合在一起,作為一個(gè)復(fù)合運(yùn)算符來(lái)使用

43、。作為一個(gè)復(fù)合運(yùn)算符來(lái)使用。變量變量 雙目運(yùn)算符雙目運(yùn)算符 表達(dá)式表達(dá)式變量變量 變量變量 雙目運(yùn)算符雙目運(yùn)算符 表達(dá)式表達(dá)式等價(jià)于等價(jià)于安徽三聯(lián)學(xué)院 信息與通信技術(shù)系例:例:a+=a-=aa+=a-=a* *a a(假設(shè)(假設(shè)a a初值為初值為3 3 )計(jì)算步驟:計(jì)算步驟: (1 1)自右至左,先進(jìn)行)自右至左,先進(jìn)行a-=aa-=a* *a a的計(jì)算,結(jié)果的計(jì)算,結(jié)果a=-6a=-6 (2 2) 再計(jì)算再計(jì)算 a+=a+=6 6,結(jié)果,結(jié)果a=-12a=-12思考:思考: a+=a+=(a-aa-a* *a a)結(jié)果)結(jié)果a a值為值為3 3,注意區(qū)別,注意區(qū)別安徽三聯(lián)學(xué)院 信息與通信技術(shù)

44、系3.5.3 3.5.3 關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式 1 1關(guān)系運(yùn)算符及其優(yōu)先次序關(guān)系運(yùn)算符及其優(yōu)先次序操作符操作符作用作用運(yùn)算目數(shù)運(yùn)算目數(shù)結(jié)合方向結(jié)合方向 小于小于雙目加法雙目加法自左至右自左至右= 大于大于雙目運(yùn)算雙目運(yùn)算自左至右自左至右=大于或等于大于或等于雙目運(yùn)算雙目運(yùn)算自左至右自左至右=等于等于雙目運(yùn)算雙目運(yùn)算自左至右自左至右!=!=不等于不等于雙目運(yùn)算雙目運(yùn)算自左至右自左至右安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.5.3 3.5.3 關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式 2.2.關(guān)系表達(dá)式關(guān)系表達(dá)式 表達(dá)式表達(dá)式 關(guān)系運(yùn)算符關(guān)系運(yùn)算符 表達(dá)式表達(dá)式 關(guān)系表達(dá)式的

45、值是真和假,分別用關(guān)系表達(dá)式的值是真和假,分別用“1 1”和和“0 0”表示。表示。 結(jié)合性:結(jié)合性:左結(jié)合左結(jié)合 優(yōu)先級(jí):優(yōu)先級(jí): 關(guān)系運(yùn)算符優(yōu)先級(jí)低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符。關(guān)系運(yùn)算符優(yōu)先級(jí)低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符。 、= 、=的優(yōu)先級(jí)相同,高于的優(yōu)先級(jí)相同,高于=和和!=!=,=和和!=!=的的優(yōu)先級(jí)相同。優(yōu)先級(jí)相同。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系例:若例:若a=1,b=-5,c=a(1)ca+b c(a+b) 結(jié)果為真,關(guān)系表達(dá)式值為結(jié)果為真,關(guān)系表達(dá)式值為1(2)a=bc a=(bc) 結(jié)果為真,關(guān)系表達(dá)式值為結(jié)果為真,關(guān)系表達(dá)式值為1(3)a=bc a=(bb&b

46、c (ab )&(bc),表達(dá)式值為表達(dá)式值為1 1(2)a!=b&c!=0 (a!=b )&(c!=0) ,表達(dá)式值為表達(dá)式值為1 1(3)!a|ab (!a)|(ab) ,表達(dá)式值為表達(dá)式值為1 1例:計(jì)算表達(dá)式例:計(jì)算表達(dá)式53&2|!83&2|(!8)3&2|(!8)3) &2| ( (!8)3) &2 ) | ( (!8)b?a:bab?a:b計(jì)算過(guò)程:計(jì)算過(guò)程:求解表達(dá)式求解表達(dá)式1 1; 若若表達(dá)式表達(dá)式1 1的值為真(非的值為真(非0 0),計(jì)算并返回表達(dá)),計(jì)算并返回表達(dá)式式2 2的值,否則計(jì)算并返回表達(dá)式的值,

47、否則計(jì)算并返回表達(dá)式3 3的值。的值。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系 運(yùn)算順序:運(yùn)算順序: 高于賦值運(yùn)算符,低于算術(shù)、關(guān)系、邏輯運(yùn)算符高于賦值運(yùn)算符,低于算術(shù)、關(guān)系、邏輯運(yùn)算符 如:如:y=x=0?1:sin(x)/xy=x=0?1:sin(x)/x 等價(jià)于等價(jià)于 if(x=0) y=1;else y=sin(x)/xif(x=0) y=1;else y=sin(x)/x 結(jié)合方向:結(jié)合方向:右結(jié)合右結(jié)合 如:如:ab?a:cd?c:dab?a:cd?c:d 等價(jià)于等價(jià)于 ab?a:ab?a:(cd?c:dcd?c:d)安徽三聯(lián)學(xué)院 信息與通信技術(shù)系#includemain() int a,b

48、,max; printf(n input two numbers: ); scanf(%d%d,&a,&b); printf(max=%d,ab?a:b); 程序運(yùn)行結(jié)果:程序運(yùn)行結(jié)果: input two numbers: 3 5 max=5安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.5.6 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式 逗號(hào)表達(dá)式逗號(hào)表達(dá)式 表達(dá)式表達(dá)式1 1,表達(dá)式,表達(dá)式2 2,表達(dá)式,表達(dá)式i i 作用:作用:用于連接各個(gè)表達(dá)式用于連接各個(gè)表達(dá)式如:如:3+53+5,6+86+8 過(guò)程:過(guò)程:求解表達(dá)式求解表達(dá)式1 再求解表達(dá)式再求解表達(dá)式2,表達(dá)式,表達(dá)式i 整個(gè)逗號(hào)表達(dá)式的值是表

49、達(dá)式整個(gè)逗號(hào)表達(dá)式的值是表達(dá)式i i的值的值 逗號(hào)運(yùn)算符是所有運(yùn)算中級(jí)別最低的。逗號(hào)運(yùn)算符是所有運(yùn)算中級(jí)別最低的。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系 一個(gè)逗號(hào)表達(dá)式又可與另一個(gè)表達(dá)式組成一一個(gè)逗號(hào)表達(dá)式又可與另一個(gè)表達(dá)式組成一個(gè)新的逗號(hào)表達(dá)式。個(gè)新的逗號(hào)表達(dá)式。 例:若例:若a=5,求下列逗號(hào)表達(dá)式的值,求下列逗號(hào)表達(dá)式的值 (a=3*5,a*4),),a+5計(jì)算過(guò)程:計(jì)算過(guò)程:賦值運(yùn)算最先運(yùn)算,賦值運(yùn)算最先運(yùn)算,a=15a=15,表達(dá)式表達(dá)式a a* *4 4的值并非賦值于的值并非賦值于a aaa的值為的值為1515,再計(jì)算,再計(jì)算a+5a+5,整個(gè)表達(dá)式值為,整個(gè)表達(dá)式值為2020例:例: (

50、1 1)x=(a=3,6x=(a=3,6* *3) 3) 結(jié)果結(jié)果x=18x=18 (2 2)y=a=3,6y=a=3,6* *a a 結(jié)果結(jié)果y=3y=3注:并不是任何地方出現(xiàn)的逗號(hào)都是逗號(hào)運(yùn)算符注:并不是任何地方出現(xiàn)的逗號(hào)都是逗號(hào)運(yùn)算符如:如:printf(printf(“%d,%d%d,%d”,a,b),a,b); 這里的逗號(hào)為這里的逗號(hào)為分隔符分隔符安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.5.7 3.5.7 位運(yùn)算位運(yùn)算 操作符操作符作用作用位邏輯與位邏輯與位邏輯或位邏輯或 位邏輯異或位邏輯異或 位邏輯反位邏輯反右移右移安徽三聯(lián)學(xué)院 信息與通信技術(shù)系 位運(yùn)算符的運(yùn)算對(duì)象只能是位運(yùn)算符的運(yùn)算對(duì)

51、象只能是整型整型或或字符型字符型數(shù)據(jù)數(shù)據(jù)(1 1)左移)左移如:如:a=a2a=a2a2,將,將a a的二進(jìn)制數(shù)右移的二進(jìn)制數(shù)右移2 2位位注:移到右端的低位被舍棄,對(duì)無(wú)符號(hào)數(shù),高位補(bǔ)注:移到右端的低位被舍棄,對(duì)無(wú)符號(hào)數(shù),高位補(bǔ)0 0若若a=15a=15,右移得,右移得0000001100000011 若若b=-3,b=-3,即二進(jìn)制數(shù)即二進(jìn)制數(shù)1111110111111101(補(bǔ)碼)(補(bǔ)碼) b1b1后得后得1111111011111110(大多數(shù)機(jī)器使用算術(shù)右移)(大多數(shù)機(jī)器使用算術(shù)右移) 結(jié)果變結(jié)果變-2-2補(bǔ)最高有效位,移幾位補(bǔ)幾位補(bǔ)最高有效位,移幾位補(bǔ)幾位參與位運(yùn)算的數(shù)以補(bǔ)碼方式出現(xiàn)

52、參與位運(yùn)算的數(shù)以補(bǔ)碼方式出現(xiàn)故右移需注意符號(hào)問(wèn)題故右移需注意符號(hào)問(wèn)題安徽三聯(lián)學(xué)院 信息與通信技術(shù)系(3 3)按位與運(yùn)算)按位與運(yùn)算 參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)位進(jìn)行相與參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)位進(jìn)行相與運(yùn)算規(guī)則:有運(yùn)算規(guī)則:有0 0則為則為0 0,全,全1 1才為才為1 1即即1&1=11&1=1、1&0=01&0=0、0&1=00&1=0、0&0=00&0=0按位與運(yùn)算通常用來(lái)對(duì)某些位清按位與運(yùn)算通常用來(lái)對(duì)某些位清0 0或保留某些位?;虮A裟承┪弧@绨牙绨褁的高八位清的高八位清 0 ,保留低八位,可作,保留低八位,可作x&

53、amp;255運(yùn)算運(yùn)算( 255 的二進(jìn)制數(shù)為的二進(jìn)制數(shù)為0000000011111111)。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系(4 4)按位或運(yùn)算)按位或運(yùn)算 參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)位進(jìn)行相或參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)位進(jìn)行相或運(yùn)算規(guī)則:有運(yùn)算規(guī)則:有1 1則為則為1 1,全,全0 0才為才為0 0即即1|1=11|1=1,1|0=11|0=1,0|1=1,0|00|1=1,0|00 0安徽三聯(lián)學(xué)院 信息與通信技術(shù)系(5 5)異或運(yùn)算)異或運(yùn)算 參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)位進(jìn)行相異或參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)位進(jìn)行相異或運(yùn)算規(guī)則:相同為運(yùn)算規(guī)則:相同為0 0,不同為,不同為1 1即即11=0

54、11=0, 00=000=0,10=110=1,01=101=1。 安徽三聯(lián)學(xué)院 信息與通信技術(shù)系(6 6)非運(yùn)算)非運(yùn)算 參與運(yùn)算的數(shù)的各二進(jìn)位按位求反。參與運(yùn)算的數(shù)的各二進(jìn)位按位求反。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.5.83.5.8指針運(yùn)算符、指針運(yùn)算符、sizeofsizeof運(yùn)算符運(yùn)算符 指針運(yùn)算符指針運(yùn)算符(單目運(yùn)算符)(單目運(yùn)算符) 取內(nèi)容取內(nèi)容( (* *) )和取地址和取地址(&)(&)& &運(yùn)算符運(yùn)算符用來(lái)取出其運(yùn)算分量的地址。用來(lái)取出其運(yùn)算分量的地址。* *運(yùn)算符運(yùn)算符是是& &的逆運(yùn)算,它把運(yùn)算分量(即指針量)所的逆運(yùn)算,

55、它把運(yùn)算分量(即指針量)所指向的內(nèi)存單元中的內(nèi)容取出來(lái)。指向的內(nèi)存單元中的內(nèi)容取出來(lái)。 int a,b,*p;p=&a;/*把變量把變量a所在內(nèi)存單元的地址送給所在內(nèi)存單元的地址送給p(指針變量)(指針變量)*/b=*p;/*把把p所指單元的內(nèi)容(即所指單元的內(nèi)容(即a的值)賦給變量的值)賦給變量b*/安徽三聯(lián)學(xué)院 信息與通信技術(shù)系 sizeof sizeof (單目運(yùn)算符)(單目運(yùn)算符) 用來(lái)計(jì)算某種類(lèi)型的變量或某種數(shù)據(jù)類(lèi)型在計(jì)算用來(lái)計(jì)算某種類(lèi)型的變量或某種數(shù)據(jù)類(lèi)型在計(jì)算機(jī)內(nèi)部表示時(shí)所占用的字節(jié)數(shù)。機(jī)內(nèi)部表示時(shí)所占用的字節(jié)數(shù)。 例如:例如: sizeofsizeof(floatflo

56、at)的值為)的值為4 4,表示,表示floatfloat型占型占用用4 4個(gè)字節(jié)。個(gè)字節(jié)。 sizeofsizeof常用來(lái)計(jì)算數(shù)組或結(jié)構(gòu)所需空間大小,以常用來(lái)計(jì)算數(shù)組或結(jié)構(gòu)所需空間大小,以便進(jìn)行動(dòng)態(tài)存儲(chǔ)空間分配。便進(jìn)行動(dòng)態(tài)存儲(chǔ)空間分配。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系3.6 3.6 運(yùn)算符的優(yōu)先級(jí)和結(jié)合性運(yùn)算符的優(yōu)先級(jí)和結(jié)合性 C C語(yǔ)言允許各種運(yùn)算符組合在一起進(jìn)行混合運(yùn)語(yǔ)言允許各種運(yùn)算符組合在一起進(jìn)行混合運(yùn)算操作。因此,必須知道運(yùn)算符的優(yōu)先級(jí)。所謂算操作。因此,必須知道運(yùn)算符的優(yōu)先級(jí)。所謂“運(yùn)算符的優(yōu)先級(jí)運(yùn)算符的優(yōu)先級(jí)”是指不同的運(yùn)算符運(yùn)算的先后是指不同的運(yùn)算符運(yùn)算的先后順序。詳見(jiàn)下頁(yè)表格所

57、示。順序。詳見(jiàn)下頁(yè)表格所示。說(shuō)明:說(shuō)明:運(yùn)算符的優(yōu)先級(jí)在表中從上到下依次遞減。所有運(yùn)運(yùn)算符的優(yōu)先級(jí)在表中從上到下依次遞減。所有運(yùn)算符的優(yōu)先級(jí)共分算符的優(yōu)先級(jí)共分1515級(jí)?;具\(yùn)算符的優(yōu)先級(jí)最高級(jí)?;具\(yùn)算符的優(yōu)先級(jí)最高(為(為1 1級(jí)),逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低(為級(jí)),逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低(為1515級(jí))。級(jí))。安徽三聯(lián)學(xué)院 信息與通信技術(shù)系優(yōu)先級(jí)運(yùn)算符運(yùn)算符類(lèi)型運(yùn)算對(duì)象的個(gè)數(shù)結(jié)合性1 1( ) - .( ) - .基本基本1 1個(gè)個(gè) 單目運(yùn)算符單目運(yùn)算符自左至右自左至右2 2! + & ! + & * * sizeof ( sizeof (類(lèi)型類(lèi)型名名) +) +(正)(

58、負(fù))(正)(負(fù))單目單目2 2個(gè)個(gè) 雙目運(yùn)算符雙目運(yùn)算符自右至左3 3* * / % / %算術(shù)算術(shù)2 2個(gè)個(gè) 雙目運(yùn)算符雙目運(yùn)算符自左至右自左至右4 4+ -+ -5 5移位移位2 2個(gè)個(gè) 雙目運(yùn)算符雙目運(yùn)算符自左至右自左至右6 6 = = 關(guān)系關(guān)系2 2個(gè)個(gè) 雙目運(yùn)算符雙目運(yùn)算符自左至右自左至右7 7= = != = !=8 8& &位邏輯位邏輯2 2個(gè)個(gè) 雙目運(yùn)算符雙目運(yùn)算符自左至右自左至右9 9 1010| |1111&邏輯邏輯2 2個(gè)個(gè) 雙目運(yùn)算符雙目運(yùn)算符自左至右自左至右1212|1313?:?:條件條件3 3個(gè)個(gè) 三目運(yùn)算符三目運(yùn)算符自右至左1414= = * *= /= += -= %= = &= = /= += -= %= = &= = |= |=賦值賦值2 2個(gè)個(gè) 雙目運(yùn)算符雙目運(yùn)算符自右至左1515, ,逗號(hào)逗號(hào)n n個(gè)個(gè)自左至右自左至右安徽三聯(lián)學(xué)院 信息與通信技術(shù)系 在分析在分析C C程序或編寫(xiě)程序時(shí),要注意運(yùn)算符的程序或編寫(xiě)程序時(shí),要注意運(yùn)算符的作用及其運(yùn)算分量的個(gè)數(shù)。因?yàn)橛行┻\(yùn)算符雖作用及其運(yùn)算分量的個(gè)數(shù)。因?yàn)橛行┻\(yùn)算符雖“外表外表”一樣,但卻屬于不同類(lèi)型的運(yùn)算符,例一樣,但卻屬于不同類(lèi)型的運(yùn)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論