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

下載本文檔

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

文檔簡(jiǎn)介

1、 c語(yǔ)言北京林業(yè)大學(xué)信息學(xué)院北京林業(yè)大學(xué)信息學(xué)院?jiǎn)栴}與討論1. 編寫(xiě)程序編寫(xiě)程序(1) 編寫(xiě)程序,輸出編寫(xiě)程序,輸出“北京,北京,2008” 。(2)編寫(xiě)程序,求出兩個(gè)數(shù)的最小值)編寫(xiě)程序,求出兩個(gè)數(shù)的最小值 。 第第2章章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式數(shù)據(jù)類型、運(yùn)算符與表達(dá)式2.1c語(yǔ)言的數(shù)據(jù)類型2.2常量與變量 2.2.1常量 2.2.2變量2.3整型數(shù)據(jù) 2.3.1整型常量 2.3.2整型變量 2.3.3整型數(shù)據(jù)在內(nèi)存中的存放形式 2.3.4整型數(shù)據(jù)的溢出 2.3.5整型常量的類型2.4浮點(diǎn)數(shù)據(jù)類型2.4.1浮點(diǎn)型常量 2.4.2浮點(diǎn)型變量2.4.3浮點(diǎn)型常量的類型本章內(nèi)容本章內(nèi)容2.5 字符

2、型數(shù)據(jù)2.5.1字符常量 2.5.2字符變量2.5.3字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法2.5.4字符串常量2.6各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算2.7算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2.7.1c語(yǔ)言運(yùn)算符和c算術(shù)表達(dá)式2.7.2主要的算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.8逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式本章小結(jié) 本章內(nèi)容本章內(nèi)容2.1c語(yǔ)言的數(shù)據(jù)類型程序的主要部分是由數(shù)據(jù)和執(zhí)行語(yǔ)句組成的。計(jì)算機(jī)處理的對(duì)象是數(shù)據(jù)。數(shù)據(jù)。在程序中對(duì)所用到的所有數(shù)據(jù)都在程序中對(duì)所用到的所有數(shù)據(jù)都必須必須指定其指定其數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)的類型決定數(shù)據(jù)在內(nèi)存中占空間大小以及存儲(chǔ)方式數(shù)據(jù)的類型決定數(shù)據(jù)在內(nèi)存中占空間大小以及存儲(chǔ)方式數(shù)據(jù)類型數(shù)據(jù)類型整

3、型整型浮點(diǎn)型浮點(diǎn)型字符型字符型(char)短整型短整型(short)(short)整型整型( (intint) )長(zhǎng)整型長(zhǎng)整型(long)(long)單精度浮點(diǎn)型單精度浮點(diǎn)型(float)(float)雙精度浮點(diǎn)型雙精度浮點(diǎn)型(double)(double)空類型空類型(void)(void)基本類型指針類型指針類型(t*)構(gòu)造類型構(gòu)造類型枚舉類型枚舉類型( (enumenum) )結(jié)構(gòu)體類型結(jié)構(gòu)體類型( ( structstruct) ) )共用體類型共用體類型( union( union ) )標(biāo)識(shí)符在c語(yǔ)言中,有3類標(biāo)識(shí)符:關(guān)鍵字 不能用作變量名。不能用作變量名。如如int, float

4、, char, if, while, for系統(tǒng)預(yù)定義的標(biāo)識(shí)符;不能用作變量名不能用作變量名如printf, main, sin用戶標(biāo)識(shí)符 用戶自己定義的標(biāo)識(shí)符用戶自己定義的標(biāo)識(shí)符如符號(hào)常量、變量、函數(shù)名,數(shù)組,結(jié)構(gòu)如符號(hào)常量、變量、函數(shù)名,數(shù)組,結(jié)構(gòu)體,共用體,文件等體,共用體,文件等標(biāo)識(shí)符 標(biāo)識(shí)符是由標(biāo)識(shí)符是由字母字母、數(shù)字?jǐn)?shù)字和和下劃線下劃線組成,且組成,且第第一個(gè)字符一個(gè)字符不能是數(shù)字。不能是數(shù)字。 例如變量名、數(shù)組名、自定義函數(shù)名等。例如變量名、數(shù)組名、自定義函數(shù)名等。相同字母標(biāo)識(shí)符的大寫(xiě)和小字是有區(qū)別的,相同字母標(biāo)識(shí)符的大寫(xiě)和小字是有區(qū)別的,被認(rèn)為是不同的表示形式。被認(rèn)為是不同的表

5、示形式。 例如:例如:count count count 是不同的是不同的習(xí)慣上,符號(hào)常量用大寫(xiě),變量用小寫(xiě)。習(xí)慣上,符號(hào)常量用大寫(xiě),變量用小寫(xiě)。判斷以下標(biāo)識(shí)符是否為合法:count _above n_name x_1 x_2_ y1 y2k c_sum_1m.d 99job $12a-1 floatcircle area c1 _sum_a pi 1_c ab doc. bao bei int 2.2常量與變量 數(shù)據(jù)的基本表現(xiàn)形式為常量和變量數(shù)據(jù)的基本表現(xiàn)形式為常量和變量 2.2.1常量在程序執(zhí)行過(guò)程中在程序執(zhí)行過(guò)程中,其值不能被改變的數(shù)其值不能被改變的數(shù)據(jù)叫做據(jù)叫做常量常量。n直接直接(字

6、面字面)常量常量 在程序中可以直接使用的常量。在程序中可以直接使用的常量。n符號(hào)常量符號(hào)常量 用一個(gè)符號(hào)名來(lái)代表一個(gè)常量。用一個(gè)符號(hào)名來(lái)代表一個(gè)常量。直接常量n常量也是區(qū)分不同類型的。常量也是區(qū)分不同類型的。nc語(yǔ)言有四種類型的常量分別簡(jiǎn)稱為語(yǔ)言有四種類型的常量分別簡(jiǎn)稱為整數(shù)、整數(shù)、實(shí)數(shù)、字符和字符串。實(shí)數(shù)、字符和字符串。整型常量整型常量: 如如 12,0,-3浮點(diǎn)型(實(shí)型)常量浮點(diǎn)型(實(shí)型)常量: 如如 4.6,-1.23, 1.2e3字符型常量字符型常量: 如如 a,+,n字符串常量字符串常量: 如如“ a” ,“c program”符號(hào)常量c程序是通過(guò)程序是通過(guò)#define預(yù)處理命令來(lái)

7、定義預(yù)處理命令來(lái)定義符號(hào)常量的符號(hào)常量的。一個(gè)一個(gè)#define命令只能定義一個(gè)符號(hào)常量,命令只能定義一個(gè)符號(hào)常量,且用一行書(shū)寫(xiě),且用一行書(shū)寫(xiě),不用分號(hào)結(jié)尾不用分號(hào)結(jié)尾。 符號(hào)常量符號(hào)常量要先定義后使用要先定義后使用,定義的一般,定義的一般格式是:格式是: #define 符號(hào)常量符號(hào)常量 常量常量 如如 #define pi 3.1415926 /*不可寫(xiě)成不可寫(xiě)成 pi = 3.1415926*/標(biāo)識(shí)符使用原則:標(biāo)識(shí)符使用原則:(1)符號(hào)常量名用大寫(xiě);(2)見(jiàn)名知義,含義清楚; 如如 sum , max(3)符號(hào)常量能夠做到“一改全改”需要對(duì)某一個(gè)數(shù)進(jìn)行多處修改時(shí),利用符號(hào)常量,只需要修改

8、其定義的地方即可,避免了偶然的錯(cuò)誤。#define pi 3.1415926#include void main() double r,area,circle; r=3.6; area=pi*r*r; circle=2*pi*r; printf(%lf,%lfn,area,circle);c2_1.c符號(hào)常量符號(hào)常量浮點(diǎn)型常量浮點(diǎn)型常量整型常量整型常量字符型常量字符型常量常量舉例常量舉例使用符號(hào)常量應(yīng)注意以下兩個(gè)方面:使用符號(hào)常量應(yīng)注意以下兩個(gè)方面:(1)它不同于變量,在其作用域內(nèi)其值不能改變和賦值。 如:在上例中如再用如:在上例中如再用pi=3.14;這一語(yǔ)句進(jìn)行這一語(yǔ)句進(jìn)行賦值,則賦值,則

9、 是錯(cuò)誤的。是錯(cuò)誤的。(2)符號(hào)常量名一般用大寫(xiě),而變量名用小寫(xiě)以示區(qū)別。 標(biāo)識(shí)符的長(zhǎng)度無(wú)統(tǒng)一規(guī)定,隨系統(tǒng)而不同,tc為32個(gè),建議不要超過(guò) 個(gè)。2.2.2變量在程序運(yùn)行過(guò)程中,其值可以改變的量稱為在程序運(yùn)行過(guò)程中,其值可以改變的量稱為變量變量。變量應(yīng)該有一個(gè)名字,以便被引用,在內(nèi)存中占據(jù)一定的存儲(chǔ)單元。 注意變量區(qū)分變量名變量名和變量值變量值,這是兩個(gè)不同的概念。變量名實(shí)際上是以一個(gè)名字帶秒一個(gè)內(nèi)存地址。 變量的說(shuō)明:(變量應(yīng)該“先定義,后使用”&變量定義:變量定義: 數(shù)據(jù)類型變量名列表數(shù)據(jù)類型變量名列表l數(shù)據(jù)類型: 合法的數(shù)據(jù)類型l變量名列表:用逗號(hào)隔開(kāi)的多個(gè)標(biāo)識(shí)符舉例:舉例: 如如 in

10、ta,b,c,d;int a = 3 ;變量名變量名 3變量值變量值存儲(chǔ)單元存儲(chǔ)單元a變量在對(duì)程序編譯時(shí)由編譯系統(tǒng)給每一個(gè)變量名分配對(duì)應(yīng)在對(duì)程序編譯時(shí)由編譯系統(tǒng)給每一個(gè)變量名分配對(duì)應(yīng)的內(nèi)存地址。從變量中取值,實(shí)際上就是通過(guò)變量名的內(nèi)存地址。從變量中取值,實(shí)際上就是通過(guò)變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)。找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)。10兩個(gè)字節(jié)兩個(gè)字節(jié)a地址地址地址地址變量名變量名變量值變量值存儲(chǔ)單元存儲(chǔ)單元內(nèi)存內(nèi)存short a=10;變量的類型有變量的類型有整型、實(shí)型整型、實(shí)型(單精度實(shí)型和雙精度(單精度實(shí)型和雙精度實(shí)型)、實(shí)型)、字符型字符型等;等;8個(gè)二進(jìn)制

11、位是一個(gè)字節(jié),表示一個(gè)基本存儲(chǔ)單元。個(gè)二進(jìn)制位是一個(gè)字節(jié),表示一個(gè)基本存儲(chǔ)單元。不同數(shù)據(jù)類型的變量,編譯系統(tǒng)分配不同大小的不同數(shù)據(jù)類型的變量,編譯系統(tǒng)分配不同大小的存儲(chǔ)單元。存儲(chǔ)單元。變量的數(shù)據(jù)類型決定了該變量占用內(nèi)存存儲(chǔ)單元的個(gè)數(shù)。 變量變量的值實(shí)際存放在內(nèi)存存儲(chǔ)單元內(nèi),不同的變量存放在不同的存儲(chǔ)單元中;用sizeof(類型標(biāo)識(shí)符)(類型標(biāo)識(shí)符)來(lái)查詢變量的存儲(chǔ)空間大小。 printf(“%dn”,sizeof(int); 變量abcd0a=0;a=6;a=a+2d=10;d=d-a;6 8102內(nèi)存的存儲(chǔ)單元 inta,b,c,d;a$56a$56字符型字符型整型整型(長(zhǎng)長(zhǎng))整型或者整型或

12、者float實(shí)型實(shí)型double雙精度型雙精度型-61.33-61.33內(nèi)存區(qū)類型類型關(guān)鍵字關(guān)鍵字存儲(chǔ)字存儲(chǔ)字節(jié)數(shù)節(jié)數(shù)數(shù)值范圍數(shù)值范圍基本整型基本整型 int2-32768 32767短整型短整型short 2-32768 32767長(zhǎng)整型長(zhǎng)整型 long 4-2147483648 2147483647無(wú)符號(hào)整型無(wú)符號(hào)整型unsigned int20 65535無(wú)符號(hào)短整型無(wú)符號(hào)短整型unsigned short 20 65535無(wú)符號(hào)長(zhǎng)整型無(wú)符號(hào)長(zhǎng)整型unsigned long 404294967295單精度實(shí)型單精度實(shí)型float43.4*10-38 3.4*1038雙精度實(shí)型雙精度實(shí)型d

13、ouble81.7*10-308 1.7*10308 字符型字符型char1-128 127( 存放字符的存放字符的ascii代碼代碼 )無(wú)值型無(wú)值型void0無(wú)值無(wú)值2.3整型數(shù)據(jù)2.3.1整型常量整型常量整型常量是程序中使用最多的一種數(shù)據(jù)類型,整型常量是程序中使用最多的一種數(shù)據(jù)類型,在程序中書(shū)寫(xiě)整型常量時(shí)沒(méi)有小數(shù)部分。在程序中書(shū)寫(xiě)整型常量時(shí)沒(méi)有小數(shù)部分。&用戶根據(jù)需要分別可以用十進(jìn)制、八進(jìn)制用戶根據(jù)需要分別可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制的形式書(shū)寫(xiě):和十六進(jìn)制的形式書(shū)寫(xiě):十進(jìn)制格式:十進(jìn)制格式:書(shū)寫(xiě)時(shí)直接寫(xiě)出數(shù)字。 如 123、516、-39、156、0、+708 等。 八進(jìn)制格式八進(jìn)制格式

14、 :以0開(kāi)頭 如 0111、010007、0177777-037、0156、+0100等。十六進(jìn)制格式十六進(jìn)制格式 :以0 x或0x開(kāi)頭的數(shù)字 如 0 x78ac、0 xffff、0 x61、0x2a、0 x6d 等錯(cuò)誤的表達(dá)形式:錯(cuò)誤的表達(dá)形式:27、-018、090都是非法的八進(jìn)制整數(shù)都是非法的八進(jìn)制整數(shù)2c、-03d、18都是非法的十六進(jìn)制整數(shù)都是非法的十六進(jìn)制整數(shù) 2.3.2整型變量基本整型 int短整型 short int長(zhǎng)整型 long int占字節(jié)數(shù)排序 shortintlongvisual c+給整型變量分配字節(jié)情況short: 2個(gè)字節(jié)int: 4字節(jié)long: 4字節(jié)例如,

15、短整型(例如,短整型(shortshort)變量)變量的數(shù)值范圍是的數(shù)值范圍是-32768-327683276732767參見(jiàn)參見(jiàn)p22-表表2-1tc和和vc中的整數(shù)中的整數(shù)數(shù)據(jù)類型比較數(shù)據(jù)類型比較無(wú)符號(hào)整型變量無(wú)符號(hào)基本整型 unsigned int無(wú)符號(hào)短整型 unsigned short int無(wú)符號(hào)長(zhǎng)整型 unsigned long int占字節(jié)數(shù)排序unsigned shortunsigned intunsigned longvisual c+給整型變量分配字節(jié)情況unsigned short: 2個(gè)字節(jié)個(gè)字節(jié)unsigned int: 4字節(jié)字節(jié)unsigned long: 4字

16、節(jié)字節(jié)例如,無(wú)符號(hào)短整型例如,無(wú)符號(hào)短整型變量的數(shù)值范圍是變量的數(shù)值范圍是0 06553565535#include void main() short a,c; unsigned short b,d; a=32767; b=a; c=a+1; d=b+1; printf(c=%d,d=%dn,c,d);程序運(yùn)行結(jié)果:程序運(yùn)行結(jié)果:c=- -32768,d=32768整型變量舉例整型變量舉例整型變量舉例整型變量舉例c2_2.c整型變量的定義:整型變量的定義:int a,bmain() int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u; d=b+u;

17、 printf(a+u=%d,b+u=%dn,c,d);a+u=22 b+u=-14運(yùn)行結(jié)果:運(yùn)行結(jié)果:main()int a=-32766;unsigned b;b=a;printf(a=%d,b=%un,a,b);結(jié)果:a=-32766,b=327662.3.3整型數(shù)據(jù)在內(nèi)存中的存放形式數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的。例如 int i; i=10;變量i 在內(nèi)存中實(shí)際存放情況:100000101000000000實(shí)際上,在存放整數(shù)的存儲(chǔ)單元中,一般情況下,最左面的一位是用來(lái)表示符號(hào)的“0”代表數(shù)值為正,“1”代表數(shù)值為負(fù)。實(shí)際上,數(shù)值是以補(bǔ)碼的形式表示的。正數(shù)的原碼與它的反碼和補(bǔ)碼相同。

18、如果是負(fù)數(shù),求其補(bǔ)碼的方法: 將該數(shù)的絕對(duì)值得二進(jìn)制的形式,按位取反再加1。例如-10的補(bǔ)碼是:10取反再加1000010100000000011110101111111111111011011111111或?qū)χ苯訉?duì)負(fù)數(shù)求其補(bǔ)碼:方法是:除符號(hào)位外,將其原碼的數(shù)值部分求反(即變,變)則可求其反碼,由反碼的最低位加即可求得其補(bǔ)碼。其結(jié)果一樣。2.3.4整型數(shù)據(jù)的溢出如果在tc環(huán)境下,系統(tǒng)給一個(gè)整型變量分配2個(gè)字節(jié),則變量的最大允許值是32767,如果再加1,則會(huì)出現(xiàn)什么情況?例2-3 整型數(shù)據(jù)的溢出include void main( ) int a,b; a=32767; b=a+1; pri

19、ntf(“%d,%dn”,a,b);程序運(yùn)行結(jié)果:程序運(yùn)行結(jié)果:32767,-32768 解釋a:32767b:-32768,下面是-32768的補(bǔ)碼形式。注意:一個(gè)2字節(jié)的整數(shù)變量只能容納-3276832767,大于32767,或小于-32768,就要發(fā)生”溢出溢出”現(xiàn)象。11111111011111110000000010000000n對(duì)于同一道題,在vc環(huán)境下,則不會(huì)發(fā)生溢出,因?yàn)樵趘c環(huán)境下,整型的數(shù)據(jù)占4個(gè)字節(jié),則數(shù)據(jù)的范圍為: -21474836482147483647.n這時(shí)的運(yùn)行結(jié)果是: 32767,327682.3.5整型常量的類型 常量也是有類型的,因?yàn)閿?shù)據(jù)是要存儲(chǔ)的。不同

20、類型的數(shù)據(jù)的所所分配的字節(jié)和存儲(chǔ)方式是不同的。整型常量在字面上就能決定它的類型。(1)如果值在-3276832767范圍內(nèi),則認(rèn)為它是int型,分配2個(gè)字節(jié),可以賦值給int和long int型變量2.3.5整型常量的類型(2)如果值在-21474836482147483647范圍內(nèi),則認(rèn)為它是長(zhǎng)整型,分配4個(gè)字節(jié),可以賦值給long int型變量。(3)整型常量后面加l或l,則認(rèn)為是long int型常量。 例如例如123l,456l。(4)整型常量后面加u或u,認(rèn)為是unsigned int型常量。例如:例如: 123u,456u。2.4 浮點(diǎn)型數(shù)據(jù)實(shí)型常量又稱為浮點(diǎn)型常量,只能用十進(jìn)制來(lái)

21、表示,可以用小數(shù)或指數(shù)兩種形式表示。(1)小數(shù)形式)小數(shù)形式-數(shù)字小數(shù)點(diǎn)數(shù)字小數(shù)點(diǎn) (注意注意必須有小數(shù)點(diǎn))必須有小數(shù)點(diǎn)) 如:如:0.12、.12、0.0、12. 等。等。(2)指數(shù)形式)指數(shù)形式-又稱為科學(xué)計(jì)數(shù)法。又稱為科學(xué)計(jì)數(shù)法。 如:如: 12e3=12e3=12*103。注意:注意:1e和e均可。如12e3和12e3相等。 2e之前必須有數(shù)字,e后必須為整數(shù)。 如:如: e2、3e1.2 是非法的指數(shù)形式。是非法的指數(shù)形式。2.4.1 浮點(diǎn)型常量浮點(diǎn)型常量2.4.2浮點(diǎn)型變量1.浮點(diǎn)型變量的分類單精度(float型)浮點(diǎn)型變量雙精度(double型)浮點(diǎn)型變量長(zhǎng)雙精度(long do

22、uble型)浮點(diǎn)型變量一般一般c編譯系統(tǒng)為編譯系統(tǒng)為:?jiǎn)尉龋╢loat)型數(shù)據(jù)分配4個(gè)字節(jié);雙精度(double)型 8長(zhǎng)雙精度(long double) 8 不同系統(tǒng)分配的不同不同系統(tǒng)分配的不同2.浮點(diǎn)型數(shù)據(jù)在內(nèi)存中存放形式浮點(diǎn)型數(shù)據(jù)在內(nèi)存中存放形式浮點(diǎn)型數(shù)據(jù)是按照指數(shù)形式存儲(chǔ)。系統(tǒng)把一個(gè)浮點(diǎn)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分分別存放。3.浮點(diǎn)型數(shù)據(jù)的舍入誤差浮點(diǎn)型數(shù)據(jù)的舍入誤差浮點(diǎn)型數(shù)據(jù)提供有限的有效數(shù)位,超出部分將被舍去。float類型的單精度變量,它只保證7位有效數(shù)字(包括小數(shù)點(diǎn))。double類型的雙精度變量,可以提供16位有效數(shù)字。2.4.3浮點(diǎn)型常量的類型浮點(diǎn)型常量也是有類型的,不同

23、的類型的數(shù)據(jù)按不同的方式存儲(chǔ)。c編譯系統(tǒng)編譯系統(tǒng)把浮點(diǎn)型常量作為雙精度處理。若不想把浮點(diǎn)型常量作為雙精度處理,可以在數(shù)值后面加f或者f,這樣會(huì)按單精度處理。 1.23f,3.66fc2_3.c#include void main()float a;a=3.141592612;printf(a=%fn,a);程序運(yùn)行結(jié)果:a=3.141593c2_4.c#include void main()double a;a=3.141592612;printf(a=%10.9fn,a);程序運(yùn)行結(jié)果:a=3.141592612換作換作double會(huì)怎么樣會(huì)怎么樣?main() float a,b; a=1

24、23456.789e5; b=a+20; printf( b= %fn ,b); 結(jié)果:結(jié)果:b=12345678848.000000舍入誤差舍入誤差2.5字符型數(shù)據(jù)字符型數(shù)據(jù)字符型數(shù)據(jù)用一對(duì)單引號(hào)括起來(lái)的一個(gè)字符,單引號(hào)只是字符與其他部分的分割符,不是字符的一部分,并且,不能用雙引號(hào)代替單引號(hào)。在單引號(hào)中的字符不能是單引號(hào)或反斜杠,如:,如: a , a, # 合法的字符常量合法的字符常量 , 非法的字符常量非法的字符常量 “a” 不代表字符常量不代表字符常量2.5.1.字符常量字符常量 除了以上形式的字符常量外,除了以上形式的字符常量外,c語(yǔ)言還允許語(yǔ)言還允許一種特殊形式的字符常量一種特殊

25、形式的字符常量轉(zhuǎn)義字符轉(zhuǎn)義字符。這些字符用于控制輸出或編譯系統(tǒng)本身保留,無(wú)法作為字符常量來(lái)表示。c語(yǔ)言中規(guī)定,采用反斜杠后“”跟一個(gè)字母來(lái)代表一個(gè)控制字符,反斜杠“”后的字符不再作原有的字符使用,而具有新的含義。 轉(zhuǎn)義字符例子101 a012 換行n0或000 空操作字符例子2-5轉(zhuǎn)義字符的使用/t一個(gè)“制表區(qū)”占8列/r回車(chē),將當(dāng)前位置移到本行開(kāi)頭/n換行,將當(dāng)前位置移到下一行開(kāi)頭/b退格,將當(dāng)前位置移到前一列轉(zhuǎn)義字符的使用c2_5.c#include void main()printf(ab ct derftgn);printf(hti bbj kn);運(yùn)行結(jié)果:fghia bcd ejk

26、解釋:r,回車(chē),將當(dāng)前位置移到本行開(kāi)頭;意味著自此輸出的字符(包括空格和跳格所經(jīng)過(guò)的位置)將取代原來(lái)在該位置上顯示的字符。轉(zhuǎn)義字符的使用#include void main()printf(a);printf(101n);printf(xfn);#include void main()printf(boytgirln);printf(atbrun);程序運(yùn)行結(jié)果:boy girlu b字符變量字符變量用來(lái)存放字符常量,它只能放一個(gè)字符,不要以為在一個(gè)字符變量中可以存放一個(gè)字符串(包括兩個(gè)以上的字符)。字符變量的定義形式如下:字符變量的定義形式如下: char c1,c2;字符變量的賦值字符變量

27、的賦值 c1=a; c2=b;在所有的編譯系統(tǒng)中都規(guī)定用一個(gè)字節(jié)來(lái)存在所有的編譯系統(tǒng)中都規(guī)定用一個(gè)字節(jié)來(lái)存放一個(gè)字符,因此一個(gè)字符型變量在內(nèi)存中放一個(gè)字符,因此一個(gè)字符型變量在內(nèi)存中占占1個(gè)字節(jié)。字符型變量的值在內(nèi)存中的表現(xiàn)形式為該字符對(duì)應(yīng)的ascii值,是二進(jìn)制數(shù)。c1的值為:01100001(97)c2的值為:01100010(98)字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用,也可以進(jìn)行算術(shù)運(yùn)算。2.5.3字符的存儲(chǔ)形式及使用方法字符的存儲(chǔ)形式及使用方法存儲(chǔ)形式:存儲(chǔ)形式: ascii代碼二進(jìn)制形式常用字符與ascii碼的對(duì)照表參見(jiàn) 附錄i使用方法使用方法:字符型數(shù)據(jù)可與整型數(shù)據(jù)通用輸出:字符型數(shù)據(jù)

28、可以字符形式輸出,也可以整數(shù)(0-255)形式輸出。賦值: 字符型數(shù)據(jù)可與整型數(shù)據(jù)互相賦值2.5.3字符的存儲(chǔ)形式及使用方法字符的存儲(chǔ)形式及使用方法main() char c1,c2; c1=97; /*等價(jià)于等價(jià)于c1=a*/ c2=98; /*等價(jià)于等價(jià)于c2=b*/ printf(%c,%cn,c1,c2); /*輸出?輸出?*/ printf(%d,%dn,c1,c2); /*輸出?輸出?*/ 結(jié)果:結(jié)果:a, b 97, 98例例2-6字符數(shù)據(jù)和整型數(shù)據(jù)字符數(shù)據(jù)和整型數(shù)據(jù)可以互相賦值可以互相賦值#include void main()char c1,c2;c1=a; c2=c1+32

29、;printf(%c,%cn,c1,c2);字符數(shù)據(jù)和整型數(shù)據(jù)字符數(shù)據(jù)和整型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算可以進(jìn)行算術(shù)運(yùn)算程序運(yùn)行結(jié)果:程序運(yùn)行結(jié)果:a,a2.7大小寫(xiě)字母的轉(zhuǎn)換#include void main()char c1,c2;c1=a; c2=b; c1= c1-32;c2= c2-32;printf(%c,%cn,c1,c2);運(yùn)行結(jié)果:a,b用一對(duì)雙引號(hào)雙引號(hào)“”“”括起來(lái)的一個(gè)或多個(gè)字符的序列稱為字符串。字符串以雙引號(hào)雙引號(hào)“”“”為定界符,雙引號(hào)不作為字符串的一部分,如: “hello”,“a”,“good morning!”, “i say: “goodbye!” 2.5.4 字

30、符串常量字符串常量字符串中的字符數(shù)稱為該字符串的長(zhǎng)度,在存儲(chǔ)時(shí),系統(tǒng)自動(dòng)在字符串的末尾加以字符串結(jié)束標(biāo)志,即轉(zhuǎn)義字符0。 注意:注意:“a”和a是兩種完全不同的數(shù)據(jù),所以“a”和a是不同的。 “a”是字符串常量,在內(nèi)存中占2個(gè)字節(jié)。 a是字符常量,在內(nèi)存中占1個(gè)字節(jié)。2.5.4 字符串常量字符串常量c語(yǔ)言規(guī)定,每個(gè)字符串在內(nèi)存中占用的字節(jié)數(shù)等于字符串的長(zhǎng)度+1,這是因?yàn)樽詈笠粋€(gè)字節(jié)存放的字符是空字符,其值為0,書(shū)寫(xiě)常用轉(zhuǎn)義字符0來(lái)表示。在c語(yǔ)言中這是字符串的結(jié)束標(biāo)記。例如“ab”,“a”的長(zhǎng)度分別是2和1,但它們?cè)趦?nèi)存中分別占用3和2個(gè)字節(jié)。c語(yǔ)言規(guī)定,字符串中的字母是區(qū)分大小寫(xiě)的?!癮”和“

31、a”是不同的字符串。 字符串中的字符可以是一個(gè),多個(gè),也可以沒(méi)有。沒(méi)有字符的字符串稱為“空字符串”?!啊本褪且粋€(gè)空字符串。一個(gè)字符串中所有字符的個(gè)數(shù)稱為該字符串的長(zhǎng)度(不包括結(jié)束標(biāo)志),其中每個(gè)轉(zhuǎn)義字符只當(dāng)一個(gè)字符。例如“”, “abc” ,“1234567890”,“abcd”,“101102x43x44”的長(zhǎng)度分別是:0,3,10,6,4字符串常量由一對(duì)雙撇號(hào)括起來(lái)的字符序列“hello,2008”,“a”,“bao bei”,“m.d.john”可以輸出字符串printf(“one world, one dream.”)不能將字符串常量賦給字符變量char c; c=a; c=“a”;

32、china0a0“a”“china”字符串結(jié)束標(biāo)志,字符串結(jié)束標(biāo)志,asciiascii碼碼為為0 0,是空操作字符,是空操作字符2.6數(shù)據(jù)類型的混合運(yùn)算整型、實(shí)型、字符型數(shù)據(jù)間可混合運(yùn)算 如: 1+2.8-3.6*a+b在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。運(yùn)算前要進(jìn)行類型轉(zhuǎn)換,規(guī)則如下:必定的轉(zhuǎn)換l字符數(shù)據(jù)整數(shù)lfloatdouble運(yùn)算對(duì)象類型不同時(shí)的轉(zhuǎn)換l整數(shù)double基本數(shù)據(jù)類型之間的混合運(yùn)算圖中橫向向左的箭頭表示必定的轉(zhuǎn)換,char型數(shù)據(jù)必定先轉(zhuǎn)換成int型數(shù)據(jù)再進(jìn)行運(yùn)算。 縱向的箭頭表示不同數(shù)據(jù)類型的轉(zhuǎn)換方向,c語(yǔ)言的轉(zhuǎn)換規(guī)則是由低向高轉(zhuǎn)換。1.隱式類型

33、轉(zhuǎn)換隱式類型轉(zhuǎn)換-轉(zhuǎn)換規(guī)則:轉(zhuǎn)換規(guī)則:int b;float c,f;double d;long e;c=10 + a + b*f - d/e;運(yùn)算次序是運(yùn)算次序是:1)先計(jì)算右側(cè)的表達(dá)式。進(jìn)行10+a運(yùn)算。先將a轉(zhuǎn)換為整數(shù)97,運(yùn)算結(jié)果為整數(shù)107。2)進(jìn)行b*f運(yùn)算。先將b和f均轉(zhuǎn)換為double類型,運(yùn)算結(jié)果是double類型。隱式類型轉(zhuǎn)換隱式類型轉(zhuǎn)換:舉例舉例3)整數(shù)107與b*f的積相加。先將整數(shù)107轉(zhuǎn)換為double類型(107.0),運(yùn)算結(jié)果是double類型。4)進(jìn)行d/e運(yùn)算。先將long e轉(zhuǎn)換為double類型,運(yùn)算結(jié)果是double類型。5)進(jìn)行(3)-(4)運(yùn)算,結(jié)

34、果為double類型。6)將右側(cè)表達(dá)式的結(jié)果轉(zhuǎn)換為float型,并賦給c。 #include void main() int i;float f;double d,result;long e;i=12; f=3.6f; d=12.2; e=366; result=10+a+i*f-d/e;printf(%fn,result);數(shù)據(jù)類型之間的隱式轉(zhuǎn)換舉例數(shù)據(jù)類型之間的隱式轉(zhuǎn)換舉例:一般形式一般形式: (類型名類型名) (表達(dá)式表達(dá)式) 如如: (int)x+y , (double) a 舉例 main( ) float x; int i; x=3.6 i=(int) x; printf(“x=%

35、f,i=%d”,x,i); 結(jié)果:結(jié)果:x=3.600000,i=32 顯式類型轉(zhuǎn)換顯式類型轉(zhuǎn)換-強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(類型名) (表達(dá)式)(float)7/4(float)3.14(int)3.6(char)23.6 #include void main()float a;int i;char c;a=(float)3.141592612;i=(int)a;c=(char)23.6;printf(a=%f,i=%d;c=%cn,a,i,c);運(yùn)算符和表達(dá)式2.7算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2.7.1c語(yǔ)言運(yùn)算符和表達(dá)式簡(jiǎn)介1c運(yùn)算符運(yùn)算符 運(yùn)算符又稱操作符,它指示在一個(gè)或多個(gè)操作數(shù)上完

36、成某種運(yùn)算操作或動(dòng)作。c語(yǔ)言的運(yùn)算符按所完成的運(yùn)算操作分為語(yǔ)言的運(yùn)算符按所完成的運(yùn)算操作分為 算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符與其它運(yùn)算符五類;按參與運(yùn)算的操作數(shù)可分為:按參與運(yùn)算的操作數(shù)可分為: 單目運(yùn)算符、雙目運(yùn)算符和三目運(yùn)算符。 運(yùn)算符和表達(dá)式2c表達(dá)式表達(dá)式 從一般意義上講,表達(dá)式是由運(yùn)算符和操作數(shù)組成的符合c語(yǔ)言語(yǔ)法規(guī)范的算式。算術(shù)運(yùn)算符表達(dá)式、關(guān)系運(yùn)算符表達(dá)式、邏輯運(yùn)算符表達(dá)式、賦值運(yùn)算符表達(dá)式與逗號(hào)表達(dá)式;表達(dá)式運(yùn)算的結(jié)果是一個(gè)值,稱為表達(dá)式的值,結(jié)果的數(shù)據(jù)類型稱為表達(dá)式值的類型。算術(shù)表達(dá)式用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象連接起來(lái)的、符合c語(yǔ)法規(guī)則的式子,稱為c算術(shù)表達(dá)

37、式a+b-ca*b-ca*(b-c)a*b/c-1.5+a+5%32.7.2算術(shù)運(yùn)算符和算式表達(dá)式1.基本的算術(shù)運(yùn)算符基本的算術(shù)運(yùn)算符加法運(yùn)算符 or 正值運(yùn)算符 減法運(yùn)算符 or 負(fù)值運(yùn)算符 乘法運(yùn)算符 * 不能寫(xiě)為 or 除法運(yùn)算符 /模運(yùn)算符 or 求余運(yùn)算符 %兩側(cè)必須為整數(shù),所以它只適用于整型和字符型7%4,120%a基本的算術(shù)運(yùn)算a*12.77 10/5 7%5 10%2 12.0%6 ? (這是一個(gè)分?jǐn)?shù)這是一個(gè)分?jǐn)?shù)),寫(xiě)成,寫(xiě)成c的形式:的形式:1/22+7/3*9-(5+4)*4%6 自左至右結(jié)合自左至右結(jié)合1. 表達(dá)式中的括號(hào)不管有多少層,一律使用圓括表達(dá)式中的括號(hào)不管有多少

38、層,一律使用圓括號(hào)。如號(hào)。如(x+(y-10)/(a*a-b)。2. 在將一個(gè)數(shù)學(xué)上的運(yùn)算式寫(xiě)成對(duì)應(yīng)的在將一個(gè)數(shù)學(xué)上的運(yùn)算式寫(xiě)成對(duì)應(yīng)的c語(yǔ)言的語(yǔ)言的表達(dá)式時(shí),要注意進(jìn)行必要的轉(zhuǎn)換表達(dá)式時(shí),要注意進(jìn)行必要的轉(zhuǎn)換 乘號(hào)不能省略。乘號(hào)不能省略。 如在數(shù)學(xué)上兩個(gè)量相乘可寫(xiě)成xy,而寫(xiě)成c語(yǔ)言的運(yùn)算式時(shí)必須寫(xiě)成x*y。數(shù)學(xué)表達(dá)式中出現(xiàn)的數(shù)學(xué)運(yùn)算函數(shù)要用c語(yǔ)言提供的對(duì)應(yīng)的數(shù)學(xué)運(yùn)算庫(kù)函數(shù)來(lái)代替。如:在數(shù)學(xué)上求一個(gè)數(shù)x的平方根,在c語(yǔ)言中要寫(xiě)成sqrt(x)。類似的還有求絕對(duì)值、指數(shù)函數(shù)、對(duì)數(shù)函數(shù)和三角函數(shù)等。 注意事項(xiàng)注意事項(xiàng)3.要特別注意表達(dá)式中兩個(gè)整型數(shù)相除的情況要特別注意表達(dá)式中兩個(gè)整型數(shù)相除的情況如

39、:有一數(shù)學(xué)表達(dá)式為2/3(f-32),要寫(xiě)成對(duì)應(yīng)的c語(yǔ)言的表達(dá)式時(shí),如果只簡(jiǎn)單地寫(xiě)為2/3*(f-32)時(shí),則該表達(dá)式的值永遠(yuǎn)為0;因?yàn)槭街械囊驗(yàn)槭街械?和和3都為整型常量,在計(jì)算都為整型常量,在計(jì)算2/3時(shí)按、時(shí)按、整型數(shù)據(jù)的除法運(yùn)算,則結(jié)果為整型數(shù)據(jù)的除法運(yùn)算,則結(jié)果為0,但結(jié)果,但結(jié)果0并并不是我們所期望的運(yùn)算結(jié)果。所以,正確的寫(xiě)不是我們所期望的運(yùn)算結(jié)果。所以,正確的寫(xiě)法應(yīng)是法應(yīng)是2.0/3.0*(f-32)。 注意事項(xiàng)注意事項(xiàng)4. ab與與a%b的區(qū)別:的區(qū)別: ab:a,b均為整數(shù)時(shí),結(jié)果為整數(shù)a,b當(dāng)中有一個(gè)為實(shí)數(shù)時(shí),結(jié)果即為double型負(fù)數(shù)時(shí),“向零取整”,如-5/3=-1ab

40、:a,b必須為整型數(shù)據(jù),如 8%5=3, 1%2=1負(fù)數(shù)時(shí),符號(hào)與被除數(shù)相同,如-5%3= -2, 5% -3=2 注意事項(xiàng)注意事項(xiàng)5.算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性算術(shù)表達(dá)式的定義 a*b/c-1.5+a運(yùn)算符的優(yōu)先級(jí)和結(jié)合性 注意事項(xiàng)注意事項(xiàng)2.算術(shù)運(yùn)算符的優(yōu)先級(jí)與結(jié)合性優(yōu)先級(jí)(運(yùn)算符的優(yōu)先級(jí)不同時(shí))先括號(hào),再乘除(包括求余運(yùn)算),后加減a*(b-c)+e%d結(jié)合性(運(yùn)算符的優(yōu)先級(jí)相同時(shí))算術(shù)運(yùn)算符的結(jié)合性為“自左至右”,稱為“左結(jié)合性”,先與左邊的運(yùn)算符結(jié)合+ -運(yùn)算符的結(jié)合順序是自右至左。a+b-c,a*b/c表中,同一行的運(yùn)算符具有相同的優(yōu)先級(jí),

41、其優(yōu)先級(jí)按從上到下的順序遞減;如:圓括號(hào)運(yùn)算符的優(yōu)先級(jí)最高,逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低。當(dāng)同一表達(dá)式中有多個(gè)優(yōu)先級(jí)相同的運(yùn)算符時(shí),則根據(jù)其結(jié)合性確定運(yùn)算順序。c語(yǔ)言中,對(duì)表達(dá)式求值時(shí),先按優(yōu)先級(jí)確定運(yùn)次序,再將優(yōu)先級(jí)相同的運(yùn)算符按結(jié)合性進(jìn)行運(yùn)算。如表達(dá)式a+!b+c-,先求解!b和c-,然后a加上!b再加上c-得出最后的結(jié)果。解釋說(shuō)明:解釋說(shuō)明:自增作用結(jié)果自增作用結(jié)果: i=i+1; 區(qū)別區(qū)別:vi+是先使用是先使用i的值,再執(zhí)行的值,再執(zhí)行i=i+1 v+i是先執(zhí)行是先執(zhí)行i=i+1 ,再使用再使用i的值的值舉例舉例:i=3; k=i+;則則k=3,i=4;vprintf(“%d”,i+);

42、結(jié)果結(jié)果3 printf(“%d”,+i); 結(jié)果結(jié)果4自增、自減運(yùn)算符如如: : a=5;b=+a; a=5;b=a+;a=6,b=6;a=6,b=5;問(wèn)題 int i = 10;printf(%d %d %dn, +i, i, -i);問(wèn)輸出的結(jié)果是什么?問(wèn)輸出的結(jié)果是什么?10 9 9這個(gè)問(wèn)題跟函數(shù)的參數(shù)的執(zhí)行順序有關(guān)。&c語(yǔ)言中規(guī)定語(yǔ)言中規(guī)定,在多數(shù)系統(tǒng)中對(duì)函數(shù)參數(shù)在多數(shù)系統(tǒng)中對(duì)函數(shù)參數(shù)求值求值順序是順序是自右而左自右而左的。的。+,- 只能用于變量,而不能用于常只能用于變量,而不能用于常量和表達(dá)式量和表達(dá)式。如:如:5+ ,+(a+b) 都不對(duì)。都不對(duì)。+, - 的結(jié)和特性是自右至左

43、的結(jié)和特性是自右至左 如:如: -i+相當(dāng)于相當(dāng)于: -(i+)注意事項(xiàng)如如: : 2+ 2+ (2 2* *b-1)-b-1)-如如: : -a+ -(a+)-a+ -(a+) (-a)+ (-a)+問(wèn)題:?jiǎn)栴}: i+ji+j 怎么處理?怎么處理?2021-10-12自增、自減運(yùn)算符在表達(dá)式中包含自增、自減運(yùn)算符時(shí),容易出錯(cuò)在表達(dá)式中包含自增、自減運(yùn)算符時(shí),容易出錯(cuò)i = 3; i = 3;i = 3; i = 3;k= (i+)+(i+)+(i+); k=(+i)+(+i)+(+i);k= (i+)+(i+)+(i+); k=(+i)+(+i)+(+i); 9 18 9 18處理一個(gè)運(yùn)算符

44、與兩個(gè)運(yùn)算符相同的情況處理一個(gè)運(yùn)算符與兩個(gè)運(yùn)算符相同的情況,c,c編譯在處理時(shí)盡可能的(自左向右)(自左向右)將若干個(gè)字符組成一個(gè)運(yùn)算符。 k= i + j k = i -k= i + j k = i - - - -j-j等效于:等效于: 等效于:等效于: k= (i+)+j k = (i- k= (i+)+j k = (i- -) -j-) -j而非而非 而非而非 k= i+(+j) k= i+(+j) k = i -(-k = i -(- -j)-j) 自增、自減運(yùn)算符舉例#include void main() int i,j,k,u,w; i=3; j=i+; k=+i; u=-i+;

45、 w=-+i; printf(%d,%d,%d,%d,%dn,i,j,k,u,w);程序運(yùn)行結(jié)果程序運(yùn)行結(jié)果: :7, 3, 5 -5 -77, 3, 5 -5 -7關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式 關(guān)系運(yùn)算符就是對(duì)兩個(gè)量之間進(jìn)行比較的運(yùn)算符關(guān)系運(yùn)算符就是對(duì)兩個(gè)量之間進(jìn)行比較的運(yùn)算符 優(yōu)先級(jí)低于低于傳統(tǒng)運(yùn)算傳統(tǒng)運(yùn)算,但高于高于賦值運(yùn)算符賦值運(yùn)算符;其運(yùn)算的結(jié)果只有“真真”和“假假”。由關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接形成的運(yùn)算式子稱為關(guān)系表達(dá)式;注意=與賦值運(yùn)算符=的區(qū)別對(duì)于由兩個(gè)字符組成的運(yùn)算符,其兩個(gè)字符對(duì)于由兩個(gè)字符組成的運(yùn)算符,其兩個(gè)字符間間不可以加空格不可以加空格。字符數(shù)據(jù)的比

46、較是按照其 ascii 如如“ =”“ =”不能寫(xiě)成不能寫(xiě)成“ =” =”一個(gè)關(guān)系表達(dá)式的值是一個(gè)邏輯值;因此一個(gè)因此一個(gè)關(guān)系表達(dá)式的值關(guān)系表達(dá)式的值只能是真或是假 。(c c語(yǔ)言沒(méi)有邏輯型數(shù)據(jù)語(yǔ)言沒(méi)有邏輯型數(shù)據(jù). .而是而是以1 代表”真即表達(dá)式成立即表達(dá)式成立: :以0代表假,即不成立; ;如:假設(shè)如:假設(shè)a=1,b=20,c=3,則則a3:53為為1 1 38 38為為0 0(數(shù)學(xué)上判斷數(shù)學(xué)上判斷x x是否在區(qū)間是否在區(qū)間aa,bb中,習(xí)慣中,習(xí)慣上寫(xiě)成上寫(xiě)成 a a x x b b,(但在但在c c語(yǔ)言中正確的寫(xiě)法應(yīng)當(dāng)是:語(yǔ)言中正確的寫(xiě)法應(yīng)當(dāng)是:n而不是a = x c)的值為的值為1如

47、如 設(shè)設(shè)a=4,b=3 a&b 值為值為1在邏輯表達(dá)式的求值過(guò)程中,并不是所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的值時(shí)才執(zhí)行該運(yùn)算符。 a & b & c 只有a為真時(shí),才需要判別b的值;只有a和b的值都為真時(shí),才需要判別c的值;只要a為假,就不必判別b和c;如果a為真,b為假,不判別c。(為什么?)a | b|c 只要a為真,就不必判別b和c。(為什么?)注意事項(xiàng)注意事項(xiàng)即系統(tǒng)將自動(dòng)執(zhí)行即系統(tǒng)將自動(dòng)執(zhí)行“短路短路”操操作作如int i=10; 則表達(dá)式i & (i=0) & (+i)的值為0(假),該表達(dá)式運(yùn)算結(jié)束后,變量i的值為0,而不是1。 (為什么?)注

48、意事項(xiàng)注意事項(xiàng)int a= -1,b=4,k; k=(+ a 0)&(!(b-c)|(ac);t 的值是的值是如:int i=1,j; 則表達(dá)式i+|i+|i+的值為1(真),運(yùn)算結(jié)束后,變量i的值為2,而不是4。 (為什么?)對(duì)于數(shù)學(xué)上的表示多個(gè)數(shù)據(jù)間進(jìn)行比較的表達(dá)式,在c語(yǔ)言中要拆寫(xiě)成多個(gè)條件,并用邏輯運(yùn)算符將其連接形成一個(gè)邏輯表達(dá)式,而不能直接照搬。如:在數(shù)學(xué)上,要表示一個(gè)變量a的值處于-1和-9之間時(shí),可以 用-9a-9 & a-1。 注意事項(xiàng)注意事項(xiàng) 因?yàn)?,假設(shè)變量a當(dāng)前的值為-5,它的值確實(shí)處在-1和-9之間。 但在c語(yǔ)言中求-9a-1時(shí),從左向右進(jìn)行計(jì)算,先計(jì)算-9a,得1(真)

49、,此時(shí),該表達(dá)式可簡(jiǎn)化為1-9 & ab?a:b的值為的值為4。 2.8逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式 一般形式:一般形式: 表達(dá)式表達(dá)式1,表達(dá)式,表達(dá)式2,表達(dá)式表達(dá)式n求解過(guò)程:求解過(guò)程:先求表達(dá)式先求表達(dá)式1的值,然后再求表達(dá)式的值,然后再求表達(dá)式2的的值,值, ,整個(gè)逗號(hào)表達(dá)式的值為表達(dá)式整個(gè)逗號(hào)表達(dá)式的值為表達(dá)式n的值的值。逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式如: 2+3: 2+3,3 3* *5 5 則表達(dá)式最后值為則表達(dá)式最后值為 。 1515(1 1) 優(yōu)先級(jí)最低優(yōu)先級(jí)最低如如: x=2+3: x=2+3,x-4x-4 則表達(dá)式最后值為則表達(dá)式最后值為 。 1 1(2 2) 逗號(hào)表達(dá)式可以嵌套,即

50、表達(dá)式逗號(hào)表達(dá)式可以嵌套,即表達(dá)式n n本身本身也可以為一逗號(hào)表達(dá)式也可以為一逗號(hào)表達(dá)式如如: : (x=2x=2* *5 5,x-3x-3),),x x* *4 4 則表達(dá)式最后值為則表達(dá)式最后值為 . . 4040(3 3)并非所有出現(xiàn)逗號(hào)的地方,就可以作)并非所有出現(xiàn)逗號(hào)的地方,就可以作為逗號(hào)表達(dá)式為逗號(hào)表達(dá)式 如: : printf(“%d,%d,%d”,a,b,cprintf(“%d,%d,%d”,a,b,c);); printf(“%d,%d,%d”,(a,b,c),x,yprintf(“%d,%d,%d”,(a,b,c),x,y);); 舉例 #include void main()int i=2,j; (j=3*i,j+2),j*5; printf(j=%dn,j);程序運(yùn)行結(jié)果:j=6 #include void main() int i=2,j=4; printf(%dn,(i=i+1,i+j,j+1);程序運(yùn)行結(jié)果:5c語(yǔ)言的標(biāo)準(zhǔn)庫(kù)函數(shù)語(yǔ)言的標(biāo)準(zhǔn)庫(kù)函數(shù) c語(yǔ)言編譯

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論