版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第二章基本數(shù)據(jù)類型和運(yùn)算符第一頁,共六十八頁,編輯于2023年,星期四本章重點(diǎn)掌握C的幾種基本數(shù)據(jù)類型。掌握標(biāo)識(shí)符的概念,熟悉變量和符號(hào)常量先定義后使用特點(diǎn)。熟練掌握整型、長整型、短整型、無符號(hào)整型數(shù)據(jù)的定義與存儲(chǔ)特點(diǎn)。熟練掌握單精度、雙精度浮點(diǎn)數(shù)的定義與存儲(chǔ)特點(diǎn)。熟練掌握字符型數(shù)據(jù)的的定義與存儲(chǔ)特點(diǎn),并熟悉整型數(shù)據(jù)與字符型數(shù)據(jù)間的關(guān)系。掌握定義變量的同時(shí),賦初值的方法。掌握不同類型數(shù)據(jù)間的混合運(yùn)算規(guī)則。掌握不同運(yùn)算符(算術(shù)、關(guān)系、邏輯運(yùn)算符等)的使用特點(diǎn)、清楚每種運(yùn)算符的優(yōu)先級(jí)與結(jié)合性.掌握各種表達(dá)式的含義與使用要點(diǎn)。
第二頁,共六十八頁,編輯于2023年,星期四數(shù)據(jù)類型-----數(shù)據(jù)的內(nèi)在表現(xiàn)形式,即數(shù)據(jù)在加工計(jì)算過程中所表現(xiàn)出來的特征稱為數(shù)據(jù)的類型,它常簡稱為“類型”。數(shù)據(jù)類型分為基本數(shù)據(jù)類型和導(dǎo)出類型(構(gòu)造類型/復(fù)雜的數(shù)據(jù)類型)?;緮?shù)據(jù)類型第三頁,共六十八頁,編輯于2023年,星期四基本數(shù)據(jù)類型字符型(char)數(shù)值型整型(int)浮點(diǎn)型短整型長整型無符號(hào)整型無符號(hào)短整型單精度浮點(diǎn)型(float)雙精度浮點(diǎn)型(double)長雙精度浮點(diǎn)型無符號(hào)字符型有符號(hào)字符型無符號(hào)長整型C基本數(shù)據(jù)類型第四頁,共六十八頁,編輯于2023年,星期四數(shù)據(jù)在內(nèi)存中存放,存放的格式由數(shù)據(jù)類型決定。各種數(shù)據(jù)類型所包含的二進(jìn)制位數(shù)(bit,比特?cái)?shù))是不同的。數(shù)據(jù)類型的長度通常都是采用所占用的內(nèi)存空間字節(jié)數(shù)來表示。第五頁,共六十八頁,編輯于2023年,星期四關(guān)鍵字、標(biāo)識(shí)符和保留標(biāo)識(shí)符一、字符集C語言中可用到的字符集有:數(shù)字:0、1、…………、9。字母:大、小寫英文字母,注意C程序中嚴(yán)格區(qū)分大小寫字母,如A和a是不同的字符??瞻追嚎崭穹⒅票矸?、換行符和換頁符統(tǒng)稱為空白符。它們主要用于分隔單詞,一般無其它特殊意義。第六頁,共六十八頁,編輯于2023年,星期四圖形符號(hào):29個(gè)圖形(可見)符號(hào),即
!“#%&‘()*+,-./;:<=>?[\]^{|}~
主要用作各種運(yùn)算符。轉(zhuǎn)義字符:程序中有時(shí)需要用到某些不可見或難以打印的字符,C語言中采用轉(zhuǎn)義字符來表示,如:
“\n”表示一個(gè)換行符;字符’\’被稱為轉(zhuǎn)移符,表示其后的字符n具有特定的含義。第七頁,共六十八頁,編輯于2023年,星期四二、詞法約定C語言中單詞形式:注釋符、運(yùn)算符、標(biāo)點(diǎn)符、關(guān)鍵字和標(biāo)識(shí)符。(1)注釋符以“/*”開頭、“*/”結(jié)束;或者用“//”注釋當(dāng)前行(2)運(yùn)算符
C語言中含有相當(dāng)豐富的運(yùn)算符。運(yùn)算符與變量、函數(shù)一起組成表達(dá)式,表示各種運(yùn)算功能。運(yùn)算符由一個(gè)或多個(gè)字符組成。(3)標(biāo)點(diǎn)符
C語言中的標(biāo)點(diǎn)符共有13個(gè),即:
[](){}*,:=;.#第八頁,共六十八頁,編輯于2023年,星期四(4)標(biāo)識(shí)符
用于標(biāo)識(shí)變量名、符號(hào)常量名、數(shù)組名、函數(shù)名、類型名、文件名的有效字符序列。標(biāo)識(shí)符的組成:由字母、數(shù)字和下劃線組成。必須由字母或下劃線中任一字符開頭。長度為任意的。例如,以下為合法的標(biāo)識(shí)符:
nameNAME _a1 x1 Sum_2以下不是合法的標(biāo)識(shí)符:
12a
以數(shù)字開頭
#we
以#開頭
num$1
包含$字符
sum1
中間有空格第九頁,共六十八頁,編輯于2023年,星期四(5)保留標(biāo)識(shí)符保留標(biāo)識(shí)符是系統(tǒng)保留的一部分標(biāo)識(shí)符,通常用于系統(tǒng)定義和標(biāo)準(zhǔn)庫函數(shù)的名字。例如,以下劃線開始的標(biāo)識(shí)符通常用于定義系統(tǒng)變量。不應(yīng)該把這些標(biāo)識(shí)符來定義自己的變量。雖然它們也是合法的標(biāo)識(shí)符,但是用它們來做一般標(biāo)識(shí)符就可能會(huì)出問題。第十頁,共六十八頁,編輯于2023年,星期四試判斷下列標(biāo)識(shí)符正確與否:abcdA? Abcd2abc _Abcdab _2a3yes/no πr 第十一頁,共六十八頁,編輯于2023年,星期四(6)關(guān)鍵字:又稱保留字,指具有特定含義、專門用作系統(tǒng)的特定成分的一類標(biāo)識(shí)符。
標(biāo)準(zhǔn)C語言中共有32個(gè)關(guān)鍵字,按用途分為4類:
數(shù)據(jù)類型:如charint等存儲(chǔ)類:如auto等
流程控制:如ifswitch等運(yùn)算符:sizeof
注意:關(guān)鍵字不能用作一般標(biāo)識(shí)符,即不允許用作變量名或函數(shù)名等。C語言的關(guān)鍵字都是小寫的。例如else是關(guān)鍵字,但ELSE就不是關(guān)鍵字。
第十二頁,共六十八頁,編輯于2023年,星期四2.1基本數(shù)據(jù)類型
2.1.2常量1、常量的定義:在程序運(yùn)行過程中,其值保持不變的量
常量的類型:根據(jù)字面形式可將常量區(qū)分為不同的類型。2、整型常量:C語言表示整型常量的方法有以下三種:十進(jìn)制整數(shù):不帶任何修飾。如123、-456、0等;八進(jìn)制整數(shù):以數(shù)字0開頭。如0123、-011等;十六進(jìn)制整數(shù):以數(shù)字0x開頭。如0x123、0x2ef;
第十三頁,共六十八頁,編輯于2023年,星期四整型常量C語言中普通整型常量在機(jī)器中占用一個(gè)字長。
整型常量后綴
無符號(hào)整型后綴:u或U,如986u、0xfedU都是無符號(hào)整型常量。
長整型后綴:l或L,如:02341l、9666L都是長整型常量。
二者可以同時(shí)使用,例如:9999LU、077777LU第十四頁,共六十八頁,編輯于2023年,星期四實(shí)型常量3、實(shí)型常量(浮點(diǎn)數(shù))十進(jìn)制數(shù)形式的浮點(diǎn)數(shù):由數(shù)字和小數(shù)點(diǎn)組成。如:123.456、0.123、123.0、0.0、123.等。指數(shù)形式的浮點(diǎn)數(shù):用字母e表示十進(jìn)制指數(shù)中的10。如:123e3(表示123*103)、6.E5、.123e+4都是合法的浮點(diǎn)常量。注意:e字母前必須有數(shù)字,且e后的指數(shù)必須為整型。如:e3、2.1e3.5、.e3為不合法。第十五頁,共六十八頁,編輯于2023年,星期四實(shí)型常量浮點(diǎn)常量如不帶后綴,如上所示,都是雙精度類型(double)。浮點(diǎn)常量可帶后綴f或F,如3.14f,那么其類型為單精度浮點(diǎn)型(float)浮點(diǎn)常量可帶后綴l或L,如3.14L,那么其類型為長雙精度型(longdouble)第十六頁,共六十八頁,編輯于2023年,星期四4、字符常量:C語言規(guī)定以單引號(hào)‘’包圍的單個(gè)字符為字符常量。如:‘A’、‘a(chǎn)’、‘2’、’!’等。
注意:請(qǐng)區(qū)別‘A’和‘a(chǎn)’的不同;‘’中的字符引用的是該字符的ASCII碼值。字符常量的存放形式與整數(shù)的存放形式相類似,故C中的字符數(shù)據(jù)與整型數(shù)據(jù)之間具有相通性。第十七頁,共六十八頁,編輯于2023年,星期四字符常量轉(zhuǎn)義字符常量(也稱控制字符常量)用‘\’開頭的特殊形式的字符常量,用以產(chǎn)生一個(gè)動(dòng)作。如:‘\n’、‘\r’、’\t’、’\v’、’\\’、’\123’等。請(qǐng)同學(xué)們理解并記憶常用的轉(zhuǎn)義字符,學(xué)會(huì)其使用方法。第十八頁,共六十八頁,編輯于2023年,星期四轉(zhuǎn)義字符常量轉(zhuǎn)義字符功能\n換行\(zhòng)t橫向跳格\v豎向跳格\b退格\r回車\f走紙換頁\\“\”字符\’單引號(hào)字符\” 雙引號(hào)字符\a 響鈴 \ddd1至3位八進(jìn)制數(shù)所代表的字符\xhh1至2位十六進(jìn)制數(shù)所代表的字符注:橫向和縱向跳格均以8個(gè)字符為1格。第十九頁,共六十八頁,編輯于2023年,星期四5、字符串常量
C語言中用雙引號(hào)將一串字符括起來稱為字符串常量。
如“asee”、“011”、“WearestudyingC”等。字符串常量可以看作是一個(gè)數(shù)組,這個(gè)數(shù)組的每個(gè)元素是一個(gè)字符。編譯程序在編譯源程序時(shí)自動(dòng)在每個(gè)字符串末尾放空字符‘\0’,作為字符串結(jié)束標(biāo)記。
第二十頁,共六十八頁,編輯于2023年,星期四要點(diǎn):請(qǐng)區(qū)別”A”與’A’的不同。因?yàn)樗鼈兏髯栽趦?nèi)存中存放的長度不同?!癆”‘A’ASCII碼為0的字符AA\0第二十一頁,共六十八頁,編輯于2023年,星期四6、符號(hào)常量1)含義:用一個(gè)標(biāo)識(shí)符表示的常量。2)定義方法:#define符號(hào)常量數(shù)值例:#definePRICE30在程序任何用到PRICE符號(hào)常量的地方,系統(tǒng)將自動(dòng)用常量30代替。3)使用要點(diǎn):為區(qū)分符號(hào)常量與變量的不同,通常符號(hào)常量用大寫字母表示(但不是必須)。第二十二頁,共六十八頁,編輯于2023年,星期四2.1.3變量1、變量的含義:在程序執(zhí)行過程中,其值可以被改變的量。變量的構(gòu)成:變量名、變量值。
(注意區(qū)分變量名和變量值:存儲(chǔ)單元地址與存儲(chǔ)單元內(nèi)容)12a第二十三頁,共六十八頁,編輯于2023年,星期四[<存儲(chǔ)類型>]<數(shù)據(jù)類型>變量名[=初值]例: inta,b,c; /*說明a,b,c為整型變量*/
charcc; /*說明cc為字符變量*/
doublex,y; /*說明x,y為雙精度實(shí)型變量*/
變量名的啟用不要與系統(tǒng)的關(guān)鍵字相同,也不要與C語言標(biāo)準(zhǔn)函數(shù)庫中的函數(shù)名相同。2.1.3變量第二十四頁,共六十八頁,編輯于2023年,星期四C語言要求,程序里使用的每個(gè)變量都必須“先定義,后使用”
不同類型的變量應(yīng)分開定義。在同一程序的同一部分,不允許對(duì)同一變量做重復(fù)定義,也就是說,不允許有同名的變量。第二十五頁,共六十八頁,編輯于2023年,星期四2、變量的初始化:在定義變量同時(shí)可以對(duì)變量賦予初值。例如: inti1=3,i2=4;
floatf1,f2=3.5;還可以在定義后賦初值。例如:inti1,i2;/*定義整型變量i1和i2*/i1=3;i2=4;/*為i1賦初值為3,i2賦初值為4*/第二十六頁,共六十八頁,編輯于2023年,星期四3、左值和右值:左值(lvalue):在C語言中表示位于賦值運(yùn)算符左邊的值,左值通常指可以定位的值,即有地址的值,可以用來存儲(chǔ)其它的值。右值(rvalue):在C語言中表示位于賦值運(yùn)算符右邊的值。
例:
inti=5;地址A012H(左值)……數(shù)據(jù)內(nèi)容(右值)變量i5……第二十七頁,共六十八頁,編輯于2023年,星期四3、左值和右值:①x=5;
②5=x;
C中有些運(yùn)算符僅僅需要操作數(shù)需要右值,例如“+”的兩側(cè)、賦值運(yùn)算符的右邊;
有些運(yùn)算符僅僅需要左值,例如賦值運(yùn)算符“=”的左邊;
有些運(yùn)算符需要操作數(shù)同時(shí)有右值與左值的角色,例如++或--。第二十八頁,共六十八頁,編輯于2023年,星期四4、數(shù)據(jù)輸入和輸出printf()的功能:按照指定格式將需要輸出的數(shù)據(jù)在標(biāo)準(zhǔn)輸出設(shè)備上輸出。它的一般格式:printf(輸出控制,輸出數(shù)據(jù)表列);
(1)輸出控制表示由雙引號(hào)括起來的格式轉(zhuǎn)換控制信息。它分為兩種形式的信息。一種是用于說明的,計(jì)算機(jī)會(huì)原樣輸出的信息。另一種是帶有前置百分號(hào)(%)的格式轉(zhuǎn)換說明,用戶用它指定輸出數(shù)據(jù)的格式。
(2)輸出數(shù)據(jù)表列表示需要輸出的一些數(shù)據(jù)。各數(shù)據(jù)之間用逗號(hào)分隔。
第二十九頁,共六十八頁,編輯于2023年,星期四⑴照原樣輸出的部分,如:printf(“\“VisualC++6.0\””);
在顯示器上輸出“VisualC++6.0”要原樣輸出雙引號(hào)”、單引號(hào)‘和反斜杠\都必須在其前面加上一個(gè)反斜杠,要原樣輸出%則必須用兩個(gè)%。第三十頁,共六十八頁,編輯于2023年,星期四(2)轉(zhuǎn)換控制部分以%開頭用轉(zhuǎn)換字符(英文小寫字母)結(jié)束的部分,稱之為“轉(zhuǎn)換說明符”。其格式為:
“%W.N[修飾符l或L]轉(zhuǎn)換字符”
例:printf(“%d”,100);
轉(zhuǎn)換字符:又稱“轉(zhuǎn)換說明符”,常用的轉(zhuǎn)換說明符及其含義如表2.10所示。第三十一頁,共六十八頁,編輯于2023年,星期四例如:輸出整型變量i和j,使用printf()函數(shù)。為增強(qiáng)可讀性,可插入說明信息“i=”和“j=”。寫成:printf(“i=%d,j=%d",i,j);其中,第一個(gè)“%d”與i對(duì)應(yīng),第二個(gè)“%d”與j對(duì)應(yīng)。設(shè)i、j的值分別為1和2,則輸出結(jié)果為:i=1,j=2使用printf()函數(shù)時(shí),必須使用文件包含預(yù)編譯指令:#include<stdio.h>第三十二頁,共六十八頁,編輯于2023年,星期四例:字符輸出#include<stdio.h>voidmain(void){charc='a';intk=97;printf("%c,%d\n",c,c);printf("%c,%d\n",k,k);}
輸出為:a,97a,97第三十三頁,共六十八頁,編輯于2023年,星期四2.2運(yùn)算符和表達(dá)式
表達(dá)式的概念表達(dá)式是由運(yùn)算對(duì)象和運(yùn)算符組成的式子。表達(dá)式的求值規(guī)則是通過表達(dá)式中的運(yùn)算符來實(shí)現(xiàn)的。一個(gè)常量,一個(gè)變量,都可以看成是一個(gè)表達(dá)式。分類:單目運(yùn)算符:+、-雙目運(yùn)算符:+、-、*、/三目運(yùn)算符:?:第三十四頁,共六十八頁,編輯于2023年,星期四2.2.1算術(shù)運(yùn)算符
用算術(shù)運(yùn)算符或圓括號(hào)將運(yùn)算對(duì)象(運(yùn)算分量)連接起來的式子稱為算術(shù)表達(dá)式。在算術(shù)表達(dá)式中,有下面五個(gè)算術(shù)運(yùn)算符:+、-、*、/、%注意:如a/b,如果a和b都是整型量,則其商也為整型量,小數(shù)部分被舍去。如5/2結(jié)果為2,如果a、b中有一個(gè)或都是實(shí)型量,則a和b都化為實(shí)型量,然后相除,結(jié)果為實(shí)型類型的量。如5.0/2,結(jié)果為2.5“%”是求余運(yùn)算符。如a%b,其結(jié)果為a除以b后的余數(shù)。運(yùn)算符“%”要求它的兩個(gè)運(yùn)算對(duì)象都必須是整型量,其結(jié)果也是整型量。如5%2的結(jié)果為1。余數(shù)的符號(hào):跟第一個(gè)操作數(shù)相關(guān)。
第三十五頁,共六十八頁,編輯于2023年,星期四思考:在數(shù)學(xué)中,5×6÷4的運(yùn)算結(jié)果與6÷4×5的結(jié)果相同嗎?C語言中,表達(dá)式5*6/4與6/4*5的結(jié)果相同嗎?表達(dá)式8/(8/10)合法嗎?第三十六頁,共六十八頁,編輯于2023年,星期四標(biāo)準(zhǔn)系統(tǒng)庫函數(shù)調(diào)用
為了方便用戶的程序編寫,C語言編制者將一些常用功能編制成函數(shù),并把它們集中放入系統(tǒng)的函數(shù)庫中,作為標(biāo)準(zhǔn)系統(tǒng)庫函數(shù)提供給用戶使用。使用時(shí)只需要按照規(guī)定的格式書寫出來就可以了。第三十七頁,共六十八頁,編輯于2023年,星期四標(biāo)準(zhǔn)系統(tǒng)庫函數(shù)調(diào)用調(diào)用函數(shù)的格式為:函數(shù)名(參數(shù),參數(shù),…);如:調(diào)用pow()函數(shù)應(yīng)包含<math.h>文件,因此,在調(diào)用pow()函數(shù)以前,使用如下預(yù)編譯命令:
#include<math.h>pow()函數(shù)原型:
doublepow(doublex,doubley)
第三十八頁,共六十八頁,編輯于2023年,星期四標(biāo)準(zhǔn)系統(tǒng)庫函數(shù)調(diào)用例:#include<stdio.h>#include<math.h>voidmain(){doublex,y;x=8.0;y=3.0;printf("z=%lf\n",x*(3.0+pow(x,y)));}第三十九頁,共六十八頁,編輯于2023年,星期四【例2-9】將下列數(shù)學(xué)表達(dá)式改寫為符合C語言規(guī)則的算術(shù)表達(dá)式。⑴
改寫成C語言表達(dá)式為:3.14159*r*r/2.0⑵改寫成C語言表達(dá)式為:(m*n+pow(m,n))/(sin(x)+cos(y))第四十頁,共六十八頁,編輯于2023年,星期四2.2.2賦值運(yùn)算符
1、賦值運(yùn)算符和賦值表達(dá)式賦值表達(dá)式的一般格式為:變量=表達(dá)式說明:賦值運(yùn)算符左邊必須是左值,通常是變量。賦值運(yùn)算符是對(duì)右邊表達(dá)式求值以后再將該值送給左邊的變量。賦值運(yùn)算符與數(shù)學(xué)上的等號(hào)是一樣的,但含義不一樣。如果賦值號(hào)兩邊的類型不一致,則賦值時(shí)會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換。轉(zhuǎn)換原則:右邊左邊(5)
賦值運(yùn)算可以連續(xù)進(jìn)行。例如,a=b=c=10
第四十一頁,共六十八頁,編輯于2023年,星期四2.2.2賦值運(yùn)算符2.復(fù)合賦值運(yùn)算符C語言中提供了另一類賦值運(yùn)算符,稱為復(fù)合賦值運(yùn)算符。例如+=、-=、*=、/=、%=。上面5個(gè)復(fù)合運(yùn)算符的等價(jià)形式:a+=b+c等價(jià)于a=a+(b+c)a-=b+c等價(jià)于a=a-(b+c)a*=b+c等價(jià)于a=a*(b+c)a/=b+c等價(jià)于a=a/(b+c)a%=b+c等價(jià)于a=a%(b+c)
注意:復(fù)合運(yùn)算符在書寫時(shí),兩個(gè)運(yùn)算符之間不能有空格,否則就是錯(cuò)誤的。
第四十二頁,共六十八頁,編輯于2023年,星期四2.2.2賦值運(yùn)算符
3、賦值語句在賦值表達(dá)式的末尾加上一個(gè)分號(hào),就構(gòu)成了一個(gè)賦值語句。例如:i=j+k+1;(一般算術(shù)賦值語句)a=b=c=10;(連續(xù)賦值語句)a+=1;(復(fù)合賦值語句)
注意:賦值語句和賦值表達(dá)式在程序中所處的地位不一樣。
賦值語句可以作為一個(gè)獨(dú)立的語句出現(xiàn)在C程序中,而賦值表達(dá)式卻不能作為一個(gè)語句出現(xiàn),只能作為語句中的一個(gè)成分出現(xiàn)在語句中。第四十三頁,共六十八頁,編輯于2023年,星期四【例】寫出下面程序的輸出結(jié)果。#include<stdio.h>voidmain(){inta=1,b,c;b=a+1;printf("(1)b=%d\n",b);a=b+1;printf("(2)a=%d\n",a);c=(a+b)/2;printf("(3)c=%d\n",c);b=c+b;printf("(4)b=%d\n",b);c+=a+b;printf("(5)c=%d\n",c);}輸出結(jié)果為:(1)b=2(2)a=3(3)c=2(4)b=4(5)c=9第四十四頁,共六十八頁,編輯于2023年,星期四使用舉例:a=b=c=3 a=5+(c=2) a=(b=4)+(c=6) a=(b=10)/(c=2) a+=a-=a*a 表達(dá)式值為3,a,b,c值均為3表達(dá)式值為7,a值為7,c為2表達(dá)式值為10,a=10,b=4,c=6表達(dá)式值為5,a=5,b=10,c=2若a=12,(1)則a-=a*a后,a=-132,(2)a+=-132后,a=-264第四十五頁,共六十八頁,編輯于2023年,星期四【例】將大寫字母K轉(zhuǎn)換成小寫字母k輸出。
#include<stdio.h>voidmain(){charc1,c2;c1=’K’;c2=c1+’a’-’A’;printf("%c",c2);}分析:在ASCII碼表中,小寫字母和大寫字母都是分別按字母順序緊密排列在編碼表中,并且大、小寫字母ASCII碼值的差值都為32。每個(gè)字母的大、小寫差值可以用表達(dá)式表示為’a’-’A’,程序運(yùn)行結(jié)果為:k第四十六頁,共六十八頁,編輯于2023年,星期四2.2.3增/減量運(yùn)算符
C語言的表達(dá)式中,可以使用兩個(gè)與眾不同的單目運(yùn)算符。這兩個(gè)運(yùn)算符是:++和--。它們既可以出現(xiàn)在運(yùn)算對(duì)象的前面,稱為前綴運(yùn)算符;又可以出現(xiàn)在運(yùn)算對(duì)象的后面,稱為后綴運(yùn)算符?!?+”稱為自增運(yùn)算符,它的功能是使變量的值加1,“--”稱為自減運(yùn)算符,它的功能是使變量的值減1。
注意:增量運(yùn)算符所作用的運(yùn)算對(duì)象必須有左值,不能是常量或由運(yùn)算符構(gòu)成的表達(dá)式。例如,++(x+y)、++5都是不正確的
第四十七頁,共六十八頁,編輯于2023年,星期四2.2.3增/減量運(yùn)算符前綴運(yùn)算符的運(yùn)算法則是:在使用變量之前,先使變量加1或減1;后綴運(yùn)算符的運(yùn)算法則是:在使用變量之后,再使變量加1或減1。例如,設(shè)i的值為1,則執(zhí)行賦值語句j=i++;后,j為1,而i變?yōu)?。它等價(jià)于執(zhí)行下面兩個(gè)語句j=i; i=i+1;但是,執(zhí)行賦值語句j=++i;后,則j變?yōu)?,i變?yōu)?。它等價(jià)于執(zhí)行下列兩個(gè)語句i=i+1;j=i;第四十八頁,共六十八頁,編輯于2023年,星期四2.2.3增/減量運(yùn)算符【例2.16】指出下面程序執(zhí)行后的結(jié)果。#include<stdio.h>voidmain(){inti,j;i=3;printf("j=%d\n",j=i++);printf("i=%d\n",i);printf("j=%d\n",j=++i);printf("i=%d\n",i);}結(jié)果為:j=3i=4j=5i=5第四十九頁,共六十八頁,編輯于2023年,星期四例#include<stdio.h>voidmain(void){ inti=1; printf("%d\n",i+i++); i=1; printf("%d\n",++i+i); i=1; printf("%d\n",i+++i); i=1; printf("%d\n",i+(++i));
}運(yùn)行結(jié)果:2424注意:慎用++或--,特別是在同一個(gè)表達(dá)式中多次出現(xiàn)同一個(gè)變量時(shí)不要做增/減量運(yùn)算。第五十頁,共六十八頁,編輯于2023年,星期四副作用和順序點(diǎn)
在求表達(dá)式的值的同時(shí),產(chǎn)生運(yùn)算量存儲(chǔ)的操作稱為副作用。賦值操作、復(fù)合賦值操作和增量操作都會(huì)產(chǎn)生副作用。例如,表達(dá)式c=a++;會(huì)產(chǎn)生副作用,求得c的值和a的增值。順序點(diǎn)(sequencepoint)是程序執(zhí)行中關(guān)鍵的一點(diǎn)。在這個(gè)順序點(diǎn)之前,所有的副作用的計(jì)算工作都必須完成。尋找順序點(diǎn)的方法:語句的分號(hào)是一個(gè)順序點(diǎn);完全表達(dá)式求值結(jié)束產(chǎn)生一個(gè)順序點(diǎn);某些運(yùn)算符產(chǎn)生順序點(diǎn)。第五十一頁,共六十八頁,編輯于2023年,星期四2.2.4關(guān)系運(yùn)算符
C語言中提供了六種關(guān)系運(yùn)算符,用來表示兩個(gè)運(yùn)算對(duì)象之間的大小或相等關(guān)系。它們是:>(大于)<(小于),>=(大于等于),<=(小于等于),==(等于),!=(不等于)用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來的式子稱為關(guān)系表達(dá)式。例如,
a>b,a>=(a+c),a==b>c>=50都是合法的關(guān)系表達(dá)式。關(guān)系表達(dá)式的結(jié)果是
“真”(1)和“假“(0),在C語言中,凡是非0的值都是“真值”,0值才是假值。
第五十二頁,共六十八頁,編輯于2023年,星期四2.2.5邏輯運(yùn)算符
C語言中提供了三個(gè)邏輯運(yùn)算符,它們是:!(邏輯非):是單目運(yùn)算符,如!a。
若a為非零,則!a為0;若a為零,則!a為1。
&&(邏輯與):是雙目運(yùn)算符,如a&&b。
僅當(dāng)兩個(gè)運(yùn)算對(duì)象的值都為非零時(shí),結(jié)果才為1;否則,只要其中有一個(gè)運(yùn)算對(duì)象為零,則結(jié)果就為0。
‖(邏輯或):是雙目運(yùn)算符,如a‖b。
僅當(dāng)兩個(gè)運(yùn)算對(duì)象的值同時(shí)為0時(shí),結(jié)果才為0;否則,結(jié)果為1。
用邏輯運(yùn)算符將表達(dá)式連接起來的式子稱為邏輯表達(dá)式。
第五十三頁,共六十八頁,編輯于2023年,星期四
在邏輯表達(dá)式中,若連續(xù)出現(xiàn)多個(gè)’&&’運(yùn)算符時(shí),按從左至右的順序計(jì)算表達(dá)式的值,只要得到一個(gè)表達(dá)式的值為邏輯假(false),則全式結(jié)果必然為邏輯假,其后的表達(dá)式不再進(jìn)行計(jì)算。例如:intn=1,d=0;d!=0&&n=2
不計(jì)算0對(duì)于多個(gè)’||’運(yùn)算符,從左至右逐個(gè)計(jì)算每個(gè)表達(dá)式的值,只要算出一個(gè)表達(dá)式的值為邏輯真(true),則全式結(jié)果必然為邏輯真,也不再計(jì)算后面表達(dá)式的值。
第五十四頁,共六十八頁,編輯于2023年,星期四例#include<stdio.h>voidmain(void){ inti=1,j=2,z=3; (j=0)&&(z=0)||(i=3); printf("%d,%d,%d\n",i,j,z); i=1,j=2,z=3; i==1||(j=0)&&(z=0); printf("%d,%d,%d\n",i,j,z);}運(yùn)行結(jié)果:3,0,31,2,3第五十五頁,共六十八頁,編輯于2023年,星期四2.2.6條件運(yùn)算符
C語言中提供了一個(gè)與眾不同的三目運(yùn)算符“?:”。由這個(gè)運(yùn)算符構(gòu)成的表達(dá)式形式為:e?e1:e2其中,e、e1、e2代表表達(dá)式。條件表達(dá)式的求值法則是:首先求解e的值,若e值為非0,則取e1的值作為條件表達(dá)式的值;若e值為0,則取e2的值作為條件表達(dá)式的值。例如,求a、b中的最大值的條件表達(dá)式為:(a>b)?a∶b注意:符號(hào)“?”處有一個(gè)順序點(diǎn),它保證表達(dá)式e中的所有副作用都必須在求e1或e2之前完成。例如:(a>b++)?c=b:c=b+5
在執(zhí)行c=b或c=b+5以前,b一定增值。第五十六頁,共六十八頁,編輯于2023年,星期四例:#include<stdio.h>voidmain(void){ floatx=1.0; inta=2,b=3; x=(a>b)?a:b; printf(“%f”,x);}輸出為:3.000000條件表達(dá)式(a>b)?a:b的值為整型數(shù)據(jù),但x為實(shí)型數(shù)據(jù),所以輸出為實(shí)型數(shù)據(jù).第五十七頁,共六十八頁,編輯于2023年,星期四 #include<stdio.h> voidmain(void) { inta=1,b=1,c=1; a+=b; b+=c; c+=a; printf(“(1)%d\n”,a>b?a:b); printf(“(2)%d\n”,a>c?a--:c++); (a>=b>=c)?printf(“AA”):printf(“CC”); printf(“\na=%d,b=%d,c=%d\n”,a,b,c); }運(yùn)行結(jié)果:(1)2(2)3CCa=2,b=2,c=4第五十八頁,共六十八頁,編輯于2023年,星期四2.2.7逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式
C語言中,逗號(hào)還有另一個(gè)作用-逗號(hào)運(yùn)算符。用逗號(hào)運(yùn)算符把兩個(gè)或兩個(gè)以上的表達(dá)式連接起來,就構(gòu)成了逗號(hào)表達(dá)式。其格式為:
(表達(dá)式1,表達(dá)式2,...,表達(dá)式n)
由于逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低,所以用圓括號(hào)括起來以表示是一個(gè)完整的逗號(hào)表達(dá)式,其求解過程是從左至右求每個(gè)表達(dá)式的值,最右邊“表達(dá)式n”的值才是整個(gè)逗號(hào)表達(dá)式的結(jié)果值。例如:unsignedx,y=10;x=(y-=5,10/y);
第五十九頁,共六十八頁,編輯于2023年,星期四其它運(yùn)算符長度運(yùn)算符(sizeof)sizeof(數(shù)據(jù)類型名或變量名)它是單目運(yùn)算符,運(yùn)算的結(jié)果值是以字節(jié)為單位給出運(yùn)算量的長度(即幾個(gè)字節(jié))。第六十頁,共六十八頁,編輯于2023年,星期四2.2.8運(yùn)算符優(yōu)先級(jí)和結(jié)合方向
各種運(yùn)算符按由高到低的優(yōu)先關(guān)系描述如下:初等運(yùn)算符單目運(yùn)算符算術(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符(“!”除外)條件運(yùn)算符賦值運(yùn)算符逗號(hào)運(yùn)算
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職動(dòng)物營養(yǎng)管理應(yīng)用(應(yīng)用技術(shù))試題及答案
- 2025年大學(xué)三年級(jí)(食品營養(yǎng)與健康)營養(yǎng)配餐設(shè)計(jì)試題及答案
- 2025年中職城鎮(zhèn)建設(shè)(城鎮(zhèn)建設(shè)基礎(chǔ))試題及答案
- 2025年高職機(jī)電設(shè)備安裝技術(shù)(機(jī)電設(shè)備安裝)試題及答案
- 2025年大學(xué)物業(yè)服務(wù)(小區(qū)管理)試題及答案
- 2025年高職(機(jī)電一體化技術(shù))氣動(dòng)傳動(dòng)實(shí)訓(xùn)階段測(cè)試題及答案
- 2025年大學(xué)生物學(xué)(生物學(xué)案例分析)試題及答案
- 2025年大學(xué)大三(園林)園林工程施工技術(shù)試題及答案
- 2025年大學(xué)物理學(xué)與人類文明(量子物理與現(xiàn)代科技)試題及答案
- 2025年高職歷史(考古學(xué)基礎(chǔ))試題及答案
- 數(shù)字孿生方案
- 金融領(lǐng)域人工智能算法應(yīng)用倫理與安全評(píng)規(guī)范
- 2026長治日?qǐng)?bào)社工作人員招聘勞務(wù)派遣人員5人備考題庫及答案1套
- 機(jī)動(dòng)車駕校安全培訓(xùn)課件
- 河道清淤作業(yè)安全組織施工方案
- 2025年役前訓(xùn)練考試題庫及答案
- 2026年七臺(tái)河職業(yè)學(xué)院單招職業(yè)技能測(cè)試題庫附答案
- 2023-2024學(xué)年廣東省廣州市小學(xué)數(shù)學(xué)二年級(jí)上冊(cè)期末自我評(píng)估試題
- YS/T 971-2014鈦鎳形狀記憶合金絲材
- 鈷冶金概述課件
- 方小丹建筑地基基礎(chǔ)設(shè)計(jì)的若干問題課件
評(píng)論
0/150
提交評(píng)論