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

下載本文檔

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

文檔簡介

1、 數(shù)據(jù)形式數(shù)據(jù)形式 數(shù)據(jù)定義數(shù)據(jù)定義 運(yùn)算符運(yùn)算符 表達(dá)式表達(dá)式 運(yùn)算過程與類型運(yùn)算過程與類型 輸入輸出輸入輸出 2.1 數(shù)據(jù)類型和存儲形式數(shù)據(jù)類型和存儲形式常數(shù)、變量、函數(shù)和表達(dá)式是程序中的基本操作對象,它們都隱式或顯式地與一種數(shù)據(jù)類型相聯(lián)系。 2.1 數(shù)據(jù)類型和存儲形式數(shù)據(jù)類型和存儲形式數(shù)據(jù)類型是指數(shù)據(jù)的內(nèi)在表現(xiàn)形式,類型是在高級語言中的一個非常重要的概念,因為類型確定數(shù)據(jù)的存儲形式和值域,類型確定相應(yīng)數(shù)據(jù)所允許執(zhí)行的運(yùn)算。C C中中的的類類型型劃劃分分基本類型基本類型構(gòu)造類型構(gòu)造類型短整型短整型( (short int )short int )整型整型( (int)int)長整型長整型(

2、 (long int)long int)整型整型實型實型數(shù)組類型數(shù)組類型結(jié)構(gòu)類型結(jié)構(gòu)類型( (struct)struct)共用體共用體( (union)union)文件類型文件類型( (FILE)FILE)指針類型指針類型空類型(空類型(voidvoid)單精度型單精度型( (float)float)雙精度型雙精度型( (double)double) 不 同 類 型不 同 類 型的數(shù)據(jù)在計的數(shù)據(jù)在計算機(jī)中的存算機(jī)中的存儲格式也不儲格式也不同,以同,以3232位位機(jī)為例說明。機(jī)為例說明。存儲特點(diǎn):順序存放,精確表示存儲特點(diǎn):順序存放,精確表示實數(shù)存儲特點(diǎn)實數(shù)存儲特點(diǎn): :指數(shù)與小數(shù)分別存放指數(shù)與

3、小數(shù)分別存放, ,近似表示。近似表示。1.1.專用符號專用符號: : + +,- -,* *,/ /,;,;等等多為操作運(yùn)算符多為操作運(yùn)算符。2.2.單詞單詞: : 保留字(關(guān)鍵字)保留字(關(guān)鍵字):具有固定含義的字,作用是用來具有固定含義的字,作用是用來命名命名C C語句、數(shù)據(jù)類型、變量屬性及個別運(yùn)算符,一律用語句、數(shù)據(jù)類型、變量屬性及個別運(yùn)算符,一律用小寫字母表示。小寫字母表示。數(shù)據(jù)存儲類別限止符:數(shù)據(jù)存儲類別限止符:auto, extern, register, static;數(shù)據(jù)類型限止符:數(shù)據(jù)類型限止符:long, short, unsigned, struct, union;數(shù)據(jù)類

4、型:數(shù)據(jù)類型:char, double, float, int;C語句:語句: break, case, continue, default, do, else, for, goto,if,return, switch, while;其其 它:它: entry, sizeof, typedef;*C預(yù)處理:預(yù)處理:define, include, undef, ifdef, ifndef, endif,; 2.2 2.2 基本語法單位基本語法單位 用戶標(biāo)識符用戶標(biāo)識符作用作用:標(biāo)記常數(shù)、變量、自定義數(shù)據(jù)類型、函數(shù)及標(biāo)記常數(shù)、變量、自定義數(shù)據(jù)類型、函數(shù)及程序的名字程序的名字 取名規(guī)則取名規(guī)則:

5、以字母或下劃線以字母或下劃線_ _中任一字符打頭;中任一字符打頭; 在第一字符之后,可以是任意的字母、下劃線或數(shù)在第一字符之后,可以是任意的字母、下劃線或數(shù)字組成的字符序列,這個字符序列可以是空串。字組成的字符序列,這個字符序列可以是空串。 用戶標(biāo)識符用戶標(biāo)識符 說明說明: 不要與保留字同名;不要與保留字同名; C C語言中大小寫字母有不同的含義,即區(qū)分大小寫。語言中大小寫字母有不同的含義,即區(qū)分大小寫。namename和和NameName在在C C中是兩個不同的標(biāo)識符;中是兩個不同的標(biāo)識符; 習(xí)慣上除了符號常數(shù),一般都用小寫字母表示;習(xí)慣上除了符號常數(shù),一般都用小寫字母表示; 標(biāo)識符長度不限

6、,但只識別前標(biāo)識符長度不限,但只識別前8 8個字符。個字符。例例: : 正確:正確:a, a1, f_1, area, _age a, a1, f_1, area, _age 錯誤:錯誤:2 2a, last name, no#, a, last name, no#, - -xy, charxy, char2.3 2.3 C C語言中的常數(shù)分類語言中的常數(shù)分類算術(shù)常數(shù)算術(shù)常數(shù) ( (整型常數(shù)整型常數(shù)) ) 十進(jìn)制整常數(shù)十進(jìn)制整常數(shù):值域:值域之間,之間,n n為機(jī)器字長;為機(jī)器字長;例:例:123123,100100 長整數(shù)常數(shù)長整數(shù)常數(shù):值域:值域之間,占兩個機(jī)器字長之間,占兩個機(jī)器字長,表

7、示形式表示形式為為在整常數(shù)后加字母在整常數(shù)后加字母l l或或 L L; ;例:例:123123l, 123L, 100l, 100Ll, 123L, 100l, 100L 八進(jìn)制整常數(shù)八進(jìn)制整常數(shù):由數(shù)字:由數(shù)字0 0打頭,后跟一串八進(jìn)制數(shù)字(打頭,后跟一串八進(jìn)制數(shù)字(0 07 7)例:例:01230123, 01000100, 0505, 032727032727 十六進(jìn)制整常數(shù)十六進(jìn)制整常數(shù):以:以0 0 x x打頭,隨后跟十進(jìn)制數(shù)字(打頭,隨后跟十進(jìn)制數(shù)字(0 09 9)和六)和六個字母(個字母(A AF F或或a af f分別分別對應(yīng)十進(jìn)制的對應(yīng)十進(jìn)制的10101515 )組成的串。組

8、成的串。例:例:0 0 x10, 0 x1A, 0 x1f, 0 x20 x10, 0 x1A, 0 x1f, 0 x2012211nn1221212nn算術(shù)常數(shù)算術(shù)常數(shù) ( (實型常數(shù)實型常數(shù) ) )在在C C語言中單精度和雙精度實常數(shù)的表示方法相同,語言中單精度和雙精度實常數(shù)的表示方法相同,編譯程序總是把實常數(shù)處理成雙精度后再進(jìn)行運(yùn)算的。編譯程序總是把實常數(shù)處理成雙精度后再進(jìn)行運(yùn)算的。10E517893246整數(shù)部分完整形式:指數(shù)部分小數(shù)部分實常數(shù)的實常數(shù)的組成規(guī)則實常數(shù)的組成規(guī)則: 上述三個部分可以有一部分或二部分缺省,但整數(shù)部分和小數(shù)部上述三個部分可以有一部分或二部分缺省,但整數(shù)部分和

9、小數(shù)部分不能同時缺??;分不能同時缺??; 如果一個實常數(shù)有一個小數(shù)點(diǎn),則小數(shù)點(diǎn)左右至少有一邊有數(shù)字;如果一個實常數(shù)有一個小數(shù)點(diǎn),則小數(shù)點(diǎn)左右至少有一邊有數(shù)字; 如果實常數(shù)如果實常數(shù)e e或或E E,則兩邊至少至少都要有一位數(shù)字;則兩邊至少至少都要有一位數(shù)字; 指數(shù)部分必須是整數(shù)。指數(shù)部分必須是整數(shù)。實常數(shù)一般有兩種書寫形式:小數(shù)形式和指數(shù)形式實常數(shù)一般有兩種書寫形式:小數(shù)形式和指數(shù)形式 小數(shù)形式小數(shù)形式: 3. , 123.4 , .0233. , 123.4 , .023 指數(shù)形式指數(shù)形式: 1.21.2E4 , 6.5eE4 , 6.5e- -5 , 20e35 , 20e3實數(shù)的取值范圍實

10、數(shù)的取值范圍1010- -383810103838:當(dāng)數(shù)值大于:當(dāng)數(shù)值大于10103838時時產(chǎn)生上溢,小于產(chǎn)生上溢,小于1010- -3838時產(chǎn)生下溢,通常用時產(chǎn)生下溢,通常用0 0近似,近似,一般一個普通實常數(shù)在機(jī)內(nèi)表示時具有一般一個普通實常數(shù)在機(jī)內(nèi)表示時具有6 67 7位十進(jìn)位十進(jìn)制有效數(shù)字,雙精度實數(shù)具有制有效數(shù)字,雙精度實數(shù)具有1616位十進(jìn)制有效數(shù)字。位十進(jìn)制有效數(shù)字。算術(shù)常數(shù)算術(shù)常數(shù) ( (實型常數(shù)實型常數(shù) ) )字符常數(shù)字符常數(shù)(單個字符(簡稱字符)和字符串)(單個字符(簡稱字符)和字符串)單個字符常數(shù)單個字符常數(shù):是由一對單引號括起來的單個字符或轉(zhuǎn)義字:是由一對單引號括起來

11、的單個字符或轉(zhuǎn)義字符所構(gòu)成。在內(nèi)存中占一個字節(jié)的存儲單元。符所構(gòu)成。在內(nèi)存中占一個字節(jié)的存儲單元。例:例:A A, ,2 2, ,# #, ,+ +, , n n, , 0 0, , t t, , 。 轉(zhuǎn)義字符的意思是將反斜杠轉(zhuǎn)義字符的意思是將反斜杠 后面的字符或數(shù)值轉(zhuǎn)換成后面的字符或數(shù)值轉(zhuǎn)換成另外的意義。利用它可以表示另外的意義。利用它可以表示ASCIIASCII字符集中任何一個字符。字符集中任何一個字符。 n n: :作為換行控制字符作為換行控制字符 101101: :代表字母代表字母A A 040040: :代表空格符,代表空格符,ASCIIASCII碼為碼為3232 0 0或或 000

12、000: :代表空操作符,代表空操作符,即空字符,即空字符,ASCIIASCII碼為碼為0 0系統(tǒng)作為字符系統(tǒng)作為字符串結(jié)束符使用串結(jié)束符使用 常用的轉(zhuǎn)義字符及其作用常用的轉(zhuǎn)義字符及其作用ASCIIASCII代碼代碼含義含義字符形式字符形式1 1到到2 2位位1616進(jìn)制數(shù)所代表的字符進(jìn)制數(shù)所代表的字符 xhhxhh1 1到到3 3位位8 8進(jìn)制數(shù)所代表的字符進(jìn)制數(shù)所代表的字符 dddddd3434雙引號字符雙引號字符 3939單引號字符單引號字符 9292反斜杠字符反斜杠字符“ ” 1212換頁,將當(dāng)前位置移到下頁開頭換頁,將當(dāng)前位置移到下頁開頭 f f1313回車,將當(dāng)前位置移到本行開頭回

13、車,將當(dāng)前位置移到本行開頭 r r8 8退格,將當(dāng)前位置移到前一列退格,將當(dāng)前位置移到前一列 b b9 9水平制表(跳到下一個水平制表(跳到下一個tabtab位置)位置) t t1010換行,將當(dāng)前位置移到下一行開頭換行,將當(dāng)前位置移到下一行開頭 n nASCIIASCII代碼代碼含義含義字符形式字符形式1 1到到2 2位位1616進(jìn)制數(shù)所代表的字符進(jìn)制數(shù)所代表的字符 xhhxhh1 1到到3 3位位8 8進(jìn)制數(shù)所代表的字符進(jìn)制數(shù)所代表的字符 dddddd3434雙引號字符雙引號字符 3939單引號字符單引號字符 9292反斜杠字符反斜杠字符“ ” 1212換頁,將當(dāng)前位置移到下頁開頭換頁,將

14、當(dāng)前位置移到下頁開頭 f f1313回車,將當(dāng)前位置移到本行開頭回車,將當(dāng)前位置移到本行開頭 r r8 8退格,將當(dāng)前位置移到前一列退格,將當(dāng)前位置移到前一列 b b9 9水平制表(跳到下一個水平制表(跳到下一個tabtab位置)位置) t t1010換行,將當(dāng)前位置移到下一行開頭換行,將當(dāng)前位置移到下一行開頭 n n 字符串常數(shù)字符串常數(shù)是用一對雙引號括起來的零個或多個字符序列。采是用一對雙引號括起來的零個或多個字符序列。采用數(shù)組形式存放,并且編譯系統(tǒng)自動為串加串結(jié)束符用數(shù)組形式存放,并且編譯系統(tǒng)自動為串加串結(jié)束符 0 0,以表示串的結(jié)束。,以表示串的結(jié)束。注意注意:由于字符串末尾都被加上:

15、由于字符串末尾都被加上 0 0串結(jié)束串結(jié)束符,所以字符串在內(nèi)部表示所占的空間要比實符,所以字符串在內(nèi)部表示所占的空間要比實際字符多一個字節(jié),際字符多一個字節(jié), 所以長度為所以長度為1 1的字符串與的字符串與單字符常數(shù)是不同的。單字符常數(shù)是不同的。例:例:USTC,zhang san,A,C:USTC,zhang san,A,C: Program FilesProgram Files 注意字符與字符串的區(qū)別字符型字符型( (char)char)以一字節(jié)以一字節(jié)8 8位存放,存放形式:位存放,存放形式:17 6 5 4 3 2 1 01000000A在內(nèi)存中在內(nèi)存中邏輯形態(tài)邏輯形態(tài)A由于字符串末尾

16、都被加上由于字符串末尾都被加上 0 0串結(jié)束符,所以字符串結(jié)束符,所以字符串在內(nèi)部所占的空間要比實際字符多一個字節(jié)。串在內(nèi)部所占的空間要比實際字符多一個字節(jié)。11000000“A”A00000000邏輯形態(tài)邏輯形態(tài)0由于字符串末尾都被加上由于字符串末尾都被加上 0 0串結(jié)束符,所以字符串結(jié)束符,所以字符串在內(nèi)部所占的空間要比實際字符多一個字節(jié)。串在內(nèi)部所占的空間要比實際字符多一個字節(jié)。11000000“A”A00000000邏輯形態(tài)邏輯形態(tài)0 符號常數(shù)符號常數(shù) 符號常數(shù)習(xí)慣上用大寫字母表示;符號常數(shù)習(xí)慣上用大寫字母表示; 經(jīng)過定義,標(biāo)識符與后面的常數(shù)就具有等價的作用;經(jīng)過定義,標(biāo)識符與后面的常

17、數(shù)就具有等價的作用; 使用符號常數(shù)的目的是便于大程序的修改和閱讀直使用符號常數(shù)的目的是便于大程序的修改和閱讀直觀。觀。定義形式:定義形式: #define #define 標(biāo)識符標(biāo)識符常數(shù)常數(shù)例:例: # #define PI 3.14159define PI 3.14159#define EOF #define EOF - -1 1 2.4 2.4 變量及其類型變量及其類型 變量的定義變量的定義變量表示在變量表示在C C程序中的基本存儲單元。變量是指在程程序中的基本存儲單元。變量是指在程序運(yùn)行過程中其值可以改變的量。變量必須序運(yùn)行過程中其值可以改變的量。變量必須“先定義先定義后使用后使用”。

18、定義一般形式:定義一般形式:類型類型變量標(biāo)識符表;變量標(biāo)識符表;例例:int age, index;int age, index;float x, y; double zfloat x, y; double z; ; 定義變量的作用:定義變量的作用: 使一變量屬于某一確定的類型,即規(guī)定該使一變量屬于某一確定的類型,即規(guī)定該變量的取值范圍及它能執(zhí)行的運(yùn)算操作變量的取值范圍及它能執(zhí)行的運(yùn)算操作 ; 編譯時能為其分配相應(yīng)的存儲單元,并確編譯時能為其分配相應(yīng)的存儲單元,并確定其存儲形式,同時根據(jù)其定義檢查該變量所定其存儲形式,同時根據(jù)其定義檢查該變量所進(jìn)行的運(yùn)算合法性進(jìn)行的運(yùn)算合法性 。定義一般形式:

19、定義一般形式:類型類型變量標(biāo)識符表;變量標(biāo)識符表; 整型變量的定義整型變量的定義int age, index;int age, index;/定義整形變量定義整形變量long int count; long int count; /定義長整形變量定義長整形變量或或long count;long count;short int day, month; short int day, month; /定義短整形變量定義短整形變量或或short day, month;short day, month;unsigned addr;unsigned addr;/定義無符號整變量定義無符號整變量 存儲單元的

20、字長一般依賴于各存儲單元的字長一般依賴于各系統(tǒng)的硬件環(huán)境,略有不同。系統(tǒng)的硬件環(huán)境,略有不同。 說明說明: 單精度和雙精度的值域相同單精度和雙精度的值域相同1010- -383810103838,雙精度僅,雙精度僅提高精度。提高精度。 在運(yùn)算過程中,單精度變量的值總是轉(zhuǎn)換為雙精度在運(yùn)算過程中,單精度變量的值總是轉(zhuǎn)換為雙精度后再參與運(yùn)算的,目的是提高精度。后再參與運(yùn)算的,目的是提高精度。 實型變量的定義實型變量的定義float x, y;float x, y;/定義單精度實型變量(定義單精度實型變量(4 4字節(jié))字節(jié))double z;double z;/定義雙精度實型變量(定義雙精度實型變量(

21、8 8字節(jié))字節(jié)) 字符型變量定義字符型變量定義void main()void main()char c1=a, c2=b;char c1=a, c2=b;/定義字符變量并賦初值定義字符變量并賦初值c1=c1c1=c1- -32; c2=c232; c2=c2- -32;32;/轉(zhuǎn)換為大寫字母轉(zhuǎn)換為大寫字母printf(%c %c ,c1,c2); printf(%c %c ,c1,c2); /以字符形式輸出以字符形式輸出printf(%d %dprintf(%d %d n,c1,c2); n,c1,c2); /以整數(shù)形式輸出以整數(shù)形式輸出 輸輸出出:A B A B 65 6665 66 字符

22、型量可直接參與數(shù)值運(yùn)算,字符型量可直接參與數(shù)值運(yùn)算,它的值是該變量當(dāng)前所含字符在它的值是該變量當(dāng)前所含字符在字符集中的序數(shù)值,因此實際上字符集中的序數(shù)值,因此實際上是一個整數(shù)值是一個整數(shù)值 。 字符型量與整數(shù)的關(guān)系及其數(shù)值運(yùn)算和輸出形式11000010字符字符a a和和b b的存儲形式同整數(shù)的存儲形式同整數(shù)9797和和9898,實際上是一,實際上是一個整數(shù)值;由此個整數(shù)值;由此C C語言中字符型量從屬與整型數(shù)據(jù),可語言中字符型量從屬與整型數(shù)據(jù),可參與算術(shù)運(yùn)算;參與算術(shù)運(yùn)算;由此字符型量既可用字符形式由此字符型量既可用字符形式% %c c輸出,也可采用整輸出,也可采用整型型% %d d輸出,具體

23、采用那一種方式,由計算機(jī)根據(jù)輸出輸出,具體采用那一種方式,由計算機(jī)根據(jù)輸出格式符或運(yùn)行環(huán)境自動判定。格式符或運(yùn)行環(huán)境自動判定。10100010a97ASCII碼碼轉(zhuǎn)成二進(jìn)制轉(zhuǎn)成二進(jìn)制b98ASCII碼碼轉(zhuǎn)成二進(jìn)制轉(zhuǎn)成二進(jìn)制a97ASCII碼碼轉(zhuǎn)成二進(jìn)制轉(zhuǎn)成二進(jìn)制b98ASCII碼碼轉(zhuǎn)成二進(jìn)制轉(zhuǎn)成二進(jìn)制字符存儲單元c1c2 字符串變量實際上是一個分量為字符型量的字符數(shù)組字符串變量實際上是一個分量為字符型量的字符數(shù)組以上語句說明以上語句說明namename和和addressaddress是兩個字符串變量,是兩個字符串變量,分別含有分別含有2020個分量和個分量和3232個分量,每個分量是一個字符。

24、個分量,每個分量是一個字符。定義形式:定義形式: char char 標(biāo)識符標(biāo)識符 整形表達(dá)式整形表達(dá)式 ; :數(shù)組:數(shù)組下標(biāo)運(yùn)算符,因此標(biāo)識符屬于數(shù)組名性下標(biāo)運(yùn)算符,因此標(biāo)識符屬于數(shù)組名性質(zhì),方括號中的整型表達(dá)式的值確定數(shù)組的分量個數(shù)。質(zhì),方括號中的整型表達(dá)式的值確定數(shù)組的分量個數(shù)。例:例:char name20,address32;char name20,address32; 關(guān)于字符數(shù)組的說明關(guān)于字符數(shù)組的說明: 存放在字符數(shù)組中的字符串應(yīng)以字符串結(jié)束符存放在字符數(shù)組中的字符串應(yīng)以字符串結(jié)束符 0 0束,占一個字節(jié)的存儲空間,但不計入串長之內(nèi)。它束,占一個字節(jié)的存儲空間,但不計入串長之內(nèi)

25、。它只是作為字符串的結(jié)束標(biāo)志而已。此規(guī)定是為了編譯只是作為字符串的結(jié)束標(biāo)志而已。此規(guī)定是為了編譯程序和用戶能判斷字符串的實際長度,便于字符串的程序和用戶能判斷字符串的實際長度,便于字符串的處理。處理。數(shù)組分量序號的排列從數(shù)組分量序號的排列從0 0開始,故開始,故namename和和addressaddress數(shù)數(shù)組的分量分別為組的分量分別為:name0, name1, name3, name0, name1, name3, ,name19name19。address0, address0, address0, address0, address0, address0, ,address0,ad

26、dress0, 正確區(qū)分正確區(qū)分字符串長度字符串長度與存放字符串與存放字符串所需空間大小所需空間大小 數(shù)組名代表相應(yīng)數(shù)組存儲單元的起始地址,即通過數(shù)組名代表相應(yīng)數(shù)組存儲單元的起始地址,即通過數(shù)組名可以查找定位相應(yīng)字符串的存儲位置,可以說數(shù)組名可以查找定位相應(yīng)字符串的存儲位置,可以說字符數(shù)組名代表相應(yīng)字符串。當(dāng)數(shù)組名作為函數(shù)的參字符數(shù)組名代表相應(yīng)字符串。當(dāng)數(shù)組名作為函數(shù)的參數(shù)時,數(shù)據(jù)傳遞的方式屬于傳地址方式。數(shù)時,數(shù)據(jù)傳遞的方式屬于傳地址方式。name name 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 191920002000 0 0nasgnahz 0

27、0nasgnahz 變量的初始化變量的初始化語法形式:語法形式:數(shù)據(jù)類型數(shù)據(jù)類型 變量名變量名 = 常量表達(dá)式;常量表達(dá)式;main( )main( )int age=19; char scx=int age=19; char scx=M M; ;double pi=3.141592653;double pi=3.141592653;int convert=int convert=A A- -a a; ;執(zhí)行語句;執(zhí)行語句; 數(shù)據(jù)說明定義數(shù)據(jù)說明定義語句,在編譯語句,在編譯時有效。時有效。數(shù)據(jù)說明定義數(shù)據(jù)說明定義語句,在編譯語句,在編譯時有效。時有效。執(zhí)行語句,運(yùn)執(zhí)行語句,運(yùn)行期間有效。行期間

28、有效。執(zhí)行語句,運(yùn)執(zhí)行語句,運(yùn)行期間有效。行期間有效。 2.5 2.5 表達(dá)式和表達(dá)式語句表達(dá)式和表達(dá)式語句 表達(dá)式的組成:表達(dá)式的組成:1)1) 表達(dá)式可由常數(shù)、變量、函數(shù)調(diào)用、運(yùn)算表達(dá)式可由常數(shù)、變量、函數(shù)調(diào)用、運(yùn)算符、及圓括號內(nèi)的表達(dá)式組成;符、及圓括號內(nèi)的表達(dá)式組成;2)2) 單個常數(shù)、單個變量、或單個函數(shù)調(diào)用也單個常數(shù)、單個變量、或單個函數(shù)調(diào)用也都可以看作是一個表達(dá)式。都可以看作是一個表達(dá)式。表達(dá)式是計算機(jī)求解問題的基礎(chǔ)表達(dá)式是計算機(jī)求解問題的基礎(chǔ)表達(dá)式的學(xué)習(xí)過程中須注意表達(dá)式的表達(dá)式的學(xué)習(xí)過程中須注意表達(dá)式的書寫和運(yùn)算規(guī)則,關(guān)心表達(dá)式的值和類書寫和運(yùn)算規(guī)則,關(guān)心表達(dá)式的值和類型,要

29、求熟練正確地掌握各類表達(dá)式的型,要求熟練正確地掌握各類表達(dá)式的求解技能。求解技能。 2.5 2.5 表達(dá)式和表達(dá)式語句表達(dá)式和表達(dá)式語句豐富的運(yùn)算符與數(shù)據(jù)可構(gòu)成多種表達(dá)式,表達(dá)式求豐富的運(yùn)算符與數(shù)據(jù)可構(gòu)成多種表達(dá)式,表達(dá)式求值時各運(yùn)算分量之間類型的轉(zhuǎn)換極為靈活,適用性強(qiáng)。值時各運(yùn)算分量之間類型的轉(zhuǎn)換極為靈活,適用性強(qiáng)。整形表達(dá)式整形表達(dá)式浮點(diǎn)表達(dá)式浮點(diǎn)表達(dá)式算術(shù)運(yùn)算符算術(shù)運(yùn)算符關(guān)系運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符邏輯運(yùn)算符增減運(yùn)算符增減運(yùn)算符賦值運(yùn)算符賦值運(yùn)算符位運(yùn)算符位運(yùn)算符算術(shù)表達(dá)式算術(shù)表達(dá)式關(guān)系表達(dá)式關(guān)系表達(dá)式邏輯表達(dá)式邏輯表達(dá)式賦值表達(dá)式賦值表達(dá)式逗號表達(dá)式逗號表達(dá)式條件表達(dá)式條件表達(dá)式表達(dá)

30、式運(yùn)算的最后結(jié)果作為表達(dá)式的值,表達(dá)式運(yùn)算的最后結(jié)果作為表達(dá)式的值, 該值的類型即為表達(dá)式的類型該值的類型即為表達(dá)式的類型一、整表達(dá)式一、整表達(dá)式: :對整型量進(jìn)行運(yùn)算最終得整型值的表達(dá)式對整型量進(jìn)行運(yùn)算最終得整型值的表達(dá)式允許的運(yùn)算:允許的運(yùn)算:+-/自增自減運(yùn)算符自增自減運(yùn)算符* */ %/ %/乘、除和求余運(yùn)算符乘、除和求余運(yùn)算符+ +- -/加減運(yùn)算符加減運(yùn)算符說明:說明:(1 1)C C的運(yùn)算符除具有優(yōu)先級外還具有結(jié)合方向的特的運(yùn)算符除具有優(yōu)先級外還具有結(jié)合方向的特征征,相關(guān)規(guī)則如下:,相關(guān)規(guī)則如下:C C的運(yùn)算符的運(yùn)算符的相關(guān)規(guī)則的相關(guān)規(guī)則:1)1) 同一優(yōu)先級的運(yùn)算符級別相同,運(yùn)

31、算次序由結(jié)合方向同一優(yōu)先級的運(yùn)算符級別相同,運(yùn)算次序由結(jié)合方向決定。決定。2)2) 不同的運(yùn)算符要求有不同的運(yùn)算對象。不同的運(yùn)算符要求有不同的運(yùn)算對象。按運(yùn)算符所要求的對象個數(shù)分類,有:按運(yùn)算符所要求的對象個數(shù)分類,有:單目運(yùn)算符:單目運(yùn)算符:- -a, i+, a, i+, -i i雙目運(yùn)算符:雙目運(yùn)算符:3*5/43*5/4三目運(yùn)算符:三目運(yùn)算符:x ? a : bx ? a : b ( ? : ( ? : 為條件運(yùn)算符為條件運(yùn)算符) )3)3) 運(yùn)算符與對象的結(jié)合:運(yùn)算符與對象的結(jié)合:C C編譯程序在處理時盡可能多編譯程序在處理時盡可能多地地“自左而右自左而右”將若干字符組成運(yùn)算符(在處

32、理標(biāo)識將若干字符組成運(yùn)算符(在處理標(biāo)識符、關(guān)鍵字時也按同一原則處理)符、關(guān)鍵字時也按同一原則處理)a+b+c+a+b+c+( (a+)+(b+)+(c+)a+)+(b+)+(c+)處理為處理為 學(xué)習(xí)運(yùn)算符時應(yīng)特別注意運(yùn)算符的三個特性學(xué)習(xí)運(yùn)算符時應(yīng)特別注意運(yùn)算符的三個特性運(yùn)算符運(yùn)算符優(yōu)先級優(yōu)先級結(jié)合方向結(jié)合方向運(yùn)算對象運(yùn)算對象+ -高高從右到左從右到左單目運(yùn)算符單目運(yùn)算符* /* /% %+ +- -低低(2 2)兩整型量相除商為整數(shù)。兩整型量相除商為整數(shù)。17/517/53 35/17 05/17 0(3 3)模運(yùn)算符模運(yùn)算符% %的兩個操作數(shù)必須為整型。的兩個操作數(shù)必須為整型。從左到右從左到

33、右雙目運(yùn)算符雙目運(yùn)算符使用說明:使用說明:+i, i, -i i在使用在使用i i之前,先使之前,先使i i的值加的值加( (減減)1)1;i+, ii+, i-在使用在使用i i之后,再使之后,再使i i的值加的值加( (減減)1)1;(4 4)+自增運(yùn)算符和自增運(yùn)算符和自減運(yùn)算符,是兩個自減運(yùn)算符,是兩個特殊的單目運(yùn)算符,其運(yùn)算對象只能是變量特殊的單目運(yùn)算符,其運(yùn)算對象只能是變量( (一般為一般為整整型型) ) ,不能是表達(dá)式,操作結(jié)果分別使變量增,不能是表達(dá)式,操作結(jié)果分別使變量增1 1或減或減1 1。 增減運(yùn)算符出現(xiàn)在表達(dá)式中的運(yùn)算符多于一個的情增減運(yùn)算符出現(xiàn)在表達(dá)式中的運(yùn)算符多于一個

34、的情況況設(shè)設(shè)i i的原值都為的原值都為3 3,以下各式的運(yùn)算過程和結(jié)果分別為:,以下各式的運(yùn)算過程和結(jié)果分別為:1)1) j=+i j=+i 運(yùn)算過程:運(yùn)算過程:i=i+1, j=i; i=i+1, j=i; 運(yùn)算結(jié)果:運(yùn)算結(jié)果:j=4, i=4j=4, i=42)2) k=i+ k=i+ 運(yùn)算過程:運(yùn)算過程:k=i, i=i+1; k=i, i=i+1; 運(yùn)算結(jié)果:運(yùn)算結(jié)果:k=3, i=4k=3, i=43)3) l=l=-i i 運(yùn)算過程:運(yùn)算過程:i=ii=i- -1, l=i; 1, l=i; 運(yùn)算結(jié)果:運(yùn)算結(jié)果:l=2, i=2 l=2, i=2 4)4) m=im=i運(yùn)算過程:運(yùn)

35、算過程:m=i, i=im=i, i=i- -1; 1; 運(yùn)算結(jié)果:運(yùn)算結(jié)果:m=3, i=2 m=3, i=2 若如若如 +i; i+;i; i+;-i;i; i i-; ; 形式形式,分別作為單一分別作為單一表達(dá)式語句操作時,前綴和后綴的操作結(jié)果是相同表達(dá)式語句操作時,前綴和后綴的操作結(jié)果是相同的。的。 (此情況常出現(xiàn)在循環(huán)語句中)(此情況常出現(xiàn)在循環(huán)語句中)二、浮點(diǎn)表達(dá)式:二、浮點(diǎn)表達(dá)式:由浮點(diǎn)量及相應(yīng)運(yùn)算符組成,表達(dá)式由浮點(diǎn)量及相應(yīng)運(yùn)算符組成,表達(dá)式的的值為實型值為實型, ,允允許的運(yùn)算:許的運(yùn)算:運(yùn)算符運(yùn)算符優(yōu)先級優(yōu)先級結(jié)合方向結(jié)合方向運(yùn)算對象運(yùn)算對象* /* /高高+ + - -低

36、低從左到右從左到右雙目運(yùn)算符雙目運(yùn)算符設(shè)有:設(shè)有:int i, j; float x, y; double r;int i, j; float x, y; double r; 則以則以下都為合法的表達(dá)式:下都為合法的表達(dá)式:123.456123.456e5,e5,x, sqrt( r ) /x, sqrt( r ) /簡單表達(dá)式簡單表達(dá)式( ( i + x ) * ( j + r )i + x ) * ( j + r )/組合表達(dá)式組合表達(dá)式說明:說明:1)1) 可以整型、單精度和雙精度量的混合運(yùn)算,類型轉(zhuǎn)可以整型、單精度和雙精度量的混合運(yùn)算,類型轉(zhuǎn)換規(guī)則為:將整型、單精度量都轉(zhuǎn)換為雙精度量,

37、換規(guī)則為:將整型、單精度量都轉(zhuǎn)換為雙精度量,然后進(jìn)行運(yùn)算。然后進(jìn)行運(yùn)算。1)1) 轉(zhuǎn)換和運(yùn)算是逐步進(jìn)行的。轉(zhuǎn)換和運(yùn)算是逐步進(jìn)行的。( ( i + x ) * ( j + r )i + x ) * ( j + r )整整單單整整雙雙雙雙+ + 雙雙雙雙雙雙+ + 雙雙雙雙+ + 雙雙雙雙雙雙* *雙雙雙雙* *雙雙+ + r r雙雙雙雙+ + r r雙雙說明:說明:(1 1)綜合運(yùn)算時相關(guān)運(yùn)算符的優(yōu)先級:綜合運(yùn)算時相關(guān)運(yùn)算符的優(yōu)先級:算術(shù)運(yùn)算符算術(shù)運(yùn)算符關(guān)系運(yùn)算符關(guān)系運(yùn)算符賦值運(yùn)算符賦值運(yùn)算符高高低低(2 2)關(guān)系表達(dá)式的值是整型的。當(dāng)關(guān)系(為真)時其關(guān)系表達(dá)式的值是整型的。當(dāng)關(guān)系(為真)時其值

38、為值為1 1;當(dāng)關(guān)系不成立(為假)時其值為;當(dāng)關(guān)系不成立(為假)時其值為0 0;即以即以1 1代表代表“真真”,以,以0 0代表代表“假假”,所以說,所以說C C語言的關(guān)系表達(dá)式語言的關(guān)系表達(dá)式的值是整型的,并可參與通常的算術(shù)運(yùn)算。的值是整型的,并可參與通常的算術(shù)運(yùn)算。注意:注意: 正確書寫數(shù)學(xué)表達(dá)式,區(qū)別由運(yùn)算規(guī)則不同引起的正確書寫數(shù)學(xué)表達(dá)式,區(qū)別由運(yùn)算規(guī)則不同引起的差異。設(shè)差異。設(shè)x x的值為的值為2 2,則,則數(shù)數(shù) 學(xué)學(xué) 表表 達(dá)達(dá) 式:式:1 1 ? x x ? 1 1不成立不成立錯誤的錯誤的C C表達(dá)式表達(dá)式 :- -1 = 1 = x = 1x = 1成立成立正確的正確的C C表達(dá)

39、式表達(dá)式 :( (- -1 = 1 = x) & ( x = 1)x) & ( x = 1)不成立不成立 關(guān)系運(yùn)算符兩側(cè)可以是不同類型的算術(shù)量,系統(tǒng)自關(guān)系運(yùn)算符兩側(cè)可以是不同類型的算術(shù)量,系統(tǒng)自動由低向高轉(zhuǎn)換。動由低向高轉(zhuǎn)換。數(shù)數(shù) 學(xué)學(xué) 表表 達(dá)達(dá) 式:式:1 1 x 1x 1 不成立不成立四、邏輯表達(dá)式四、邏輯表達(dá)式由代表邏輯值的基本常量、變量、函數(shù)、關(guān)系表達(dá)式、由代表邏輯值的基本常量、變量、函數(shù)、關(guān)系表達(dá)式、邏輯運(yùn)算符及括號內(nèi)的邏輯表達(dá)式組成。邏輯運(yùn)算符及括號內(nèi)的邏輯表達(dá)式組成。C C編譯系統(tǒng)在給出邏輯運(yùn)算結(jié)果時,以數(shù)值編譯系統(tǒng)在給出邏輯運(yùn)算結(jié)果時,以數(shù)值1 1代表代表真真

40、,以,以0 0代表代表假假,但判斷一個量是否為,但判斷一個量是否為真時,以真時,以0 0代表代表假假,以非零代表,以非零代表真真,即把一,即把一個非零數(shù)值作為個非零數(shù)值作為真真。 故其值總是整數(shù)故其值總是整數(shù)1 1和和0 0,因此也可以把邏輯表達(dá)式看成是整型表達(dá)式,因此也可以把邏輯表達(dá)式看成是整型表達(dá)式,亦可參與數(shù)值運(yùn)算。亦可參與數(shù)值運(yùn)算。說明:說明:(1 1)綜合運(yùn)算時相關(guān)運(yùn)算符的優(yōu)先級:綜合運(yùn)算時相關(guān)運(yùn)算符的優(yōu)先級:!算術(shù)運(yùn)算符算術(shù)運(yùn)算符關(guān)系運(yùn)算符關(guān)系運(yùn)算符& | & | 賦值運(yùn)算符賦值運(yùn)算符高高低低(2 2)由由&和和|的結(jié)合性則(自左至右),操的結(jié)合性則(自左至

41、右),操作時有:作時有:若若&的左操作數(shù)為零,則不再對右操作數(shù)進(jìn)行的左操作數(shù)為零,則不再對右操作數(shù)進(jìn)行計算,因為必定為零。計算,因為必定為零。若若|的左操作數(shù)為非零,則不再對右操作數(shù)進(jìn)的左操作數(shù)為非零,則不再對右操作數(shù)進(jìn)行計算,因為此時必定為行計算,因為此時必定為1 1。設(shè):設(shè):int a=1,b=2; int a=1,b=2; 則表達(dá)式則表達(dá)式( ( a = 0 ) & ( b = 1 )a = 0 ) & ( b = 1 )操作后結(jié)果為:操作后結(jié)果為:表達(dá)式的值為表達(dá)式的值為0 0,且,且a=0, b=2a=0, b=2。常見的邏輯表達(dá)式有:常見的邏輯表達(dá)式有:ch

42、 =ch =& ch =a ach =ch =& ch =A Adigit digit | digit 9 9說明:說明:(1 1)表達(dá)式有值與類型的概念,左操作數(shù))表達(dá)式有值與類型的概念,左操作數(shù)(變量)的值和所屬類型,即為該表達(dá)式的值(變量)的值和所屬類型,即為該表達(dá)式的值和類型。和類型。(2 2)類型的賦值轉(zhuǎn)換:若賦值運(yùn)算符兩邊類)類型的賦值轉(zhuǎn)換:若賦值運(yùn)算符兩邊類型不一致,但都屬數(shù)值型和字符類型時,則型不一致,但都屬數(shù)值型和字符類型時,則= =右邊的表達(dá)式值的類型將自動轉(zhuǎn)換成左右邊的表達(dá)式值的類型將自動轉(zhuǎn)換成左邊變量的類型(即賦值表達(dá)式值的類型)。邊變量的類型(即賦值表

43、達(dá)式值的類型)。(4 4)復(fù)合賦值運(yùn)算符(自反運(yùn)算符):由)復(fù)合賦值運(yùn)算符(自反運(yùn)算符):由= =之前加其它雙目運(yùn)算符復(fù)合而成。之前加其它雙目運(yùn)算符復(fù)合而成。復(fù)合賦值運(yùn)算符組成形式:復(fù)合賦值運(yùn)算符組成形式:雙目操作符雙目操作符= =由此構(gòu)成:由此構(gòu)成:+= -= *= /= %=五種算術(shù)運(yùn)算符= &= = |=五種位運(yùn)算符說明:說明:(1 1)逗號表達(dá)式在語法上相當(dāng)與一個表達(dá)式;)逗號表達(dá)式在語法上相當(dāng)與一個表達(dá)式;(2 2)求解過程:先求表達(dá)式)求解過程:先求表達(dá)式1 1,再求表達(dá)式,再求表達(dá)式2 2,依次類推;依次類推;(3 3)運(yùn)算是逐步進(jìn)行的,注意變量值的變化。)運(yùn)算是逐步進(jìn)行

44、的,注意變量值的變化。4+5,7+8 4+5,7+8 逗號表達(dá)式的值為:逗號表達(dá)式的值為:1515a=3*4, a*5a=3*4, a*5逗號表達(dá)式的值為:逗號表達(dá)式的值為:6060a=3*4, a*5, a+8a=3*4, a*5, a+8逗號表達(dá)式的值為:逗號表達(dá)式的值為:2020七、條件表達(dá)式:七、條件表達(dá)式:條件運(yùn)算符:條件運(yùn)算符:? :(三目運(yùn)算符)(三目運(yùn)算符)條件表達(dá)式:條件表達(dá)式:e1 ? e2 : e3e1 ? e2 : e3其中其中 e1,e2,e3 e1,e2,e3 分別代表三個不同的表達(dá)式分別代表三個不同的表達(dá)式執(zhí)行情況:執(zhí)行情況:取取 e2e2 作為該作為該表達(dá)式的值

45、表達(dá)式的值取取e3e3作為該作為該表達(dá)式的值表達(dá)式的值e1?e1?非零非零0 0取取 e2e2 作為該作為該表達(dá)式的值表達(dá)式的值取取e3e3作為該作為該表達(dá)式的值表達(dá)式的值e1?e1?非零非零0 0 條件表達(dá)式簡潔、靈活,有廣泛的應(yīng)用。其結(jié)果的類型為取e2、e3兩者中更為高級的一種。八、類型轉(zhuǎn)換:八、類型轉(zhuǎn)換:(1 1)字符、整型、單精度、雙精度量字符、整型、單精度、雙精度量可以混合運(yùn)算。混合運(yùn)算時類型轉(zhuǎn)換的三種基本規(guī)則:可以混合運(yùn)算?;旌线\(yùn)算時類型轉(zhuǎn)換的三種基本規(guī)則: 屬同一類型,但存屬同一類型,但存儲單元長度不同之間的儲單元長度不同之間的必然轉(zhuǎn)換,短字節(jié)向長必然轉(zhuǎn)換,短字節(jié)向長字節(jié)轉(zhuǎn)換字節(jié)

46、轉(zhuǎn)換 整型與浮點(diǎn)數(shù)之間整型與浮點(diǎn)數(shù)之間的轉(zhuǎn)換,低級向高級轉(zhuǎn)的轉(zhuǎn)換,低級向高級轉(zhuǎn)換。換。 整型量有符號與無整型量有符號與無符號之間的轉(zhuǎn)換和長字符號之間的轉(zhuǎn)換和長字節(jié)的轉(zhuǎn)換。節(jié)的轉(zhuǎn)換。doublefloatint unsignedlongcharshort例:設(shè)例:設(shè)int i; float f; double d; long e;int i; float f; double d; long e;10 + 10 + a a + i * f + i * f d / ed / e雙雙 雙雙雙雙 雙雙 雙雙雙雙雙雙 雙雙雙雙雙雙9797 整整1071079797 整整107107雙雙 雙雙雙雙 雙雙雙雙

47、雙雙運(yùn)算是逐步完成的,類型轉(zhuǎn)換由系統(tǒng)自動進(jìn)行。運(yùn)算是逐步完成的,類型轉(zhuǎn)換由系統(tǒng)自動進(jìn)行。 (2 2)賦值轉(zhuǎn)換賦值轉(zhuǎn)換:其值和類型由賦值運(yùn)算符左邊的變量確定。其值和類型由賦值運(yùn)算符左邊的變量確定。(3 3)強(qiáng)制類型轉(zhuǎn)換:語法形式)強(qiáng)制類型轉(zhuǎn)換:語法形式(類型標(biāo)識符)表達(dá)式(類型標(biāo)識符)表達(dá)式作用:將表達(dá)式的值顯式地轉(zhuǎn)換成所指定的類型。作用:將表達(dá)式的值顯式地轉(zhuǎn)換成所指定的類型。例:設(shè)例:設(shè)int a; float x, y;int a; float x, y;(int)5.3%3(int)5.3%3,sqrt(double)a)sqrt(double)a),(int)(x+y)(int)(x+y

48、)九、長度運(yùn)算符九、長度運(yùn)算符語法形式:語法形式:例:例:sizeof(int)sizeof(int)/結(jié)果一般為結(jié)果一般為4 4sizeof(double) /sizeof(double) /結(jié)果一般為結(jié)果一般為8 8sizeof(sizeof(類型標(biāo)識符類型標(biāo)識符) ) 或或sizeof sizeof 表達(dá)式表達(dá)式作用:給出其運(yùn)算對象以字節(jié)為單位的存儲單元的長度。作用:給出其運(yùn)算對象以字節(jié)為單位的存儲單元的長度。十、表達(dá)式語句十、表達(dá)式語句語法形式:語法形式:例:例:i+i+x=y+1x=y+1/是表達(dá)式是表達(dá)式printf(printf(“x=%dx=%d n n”,n ) ,n ) /

49、函數(shù)調(diào)用表達(dá)式函數(shù)調(diào)用表達(dá)式表達(dá)式表達(dá)式 ;表達(dá)式語句,即表達(dá)式后加分號構(gòu)成的語句。其中表達(dá)式語句,即表達(dá)式后加分號構(gòu)成的語句。其中分號是語句的終結(jié)符,是語句的組成部分。分號是語句的終結(jié)符,是語句的組成部分。i+;i+;x=y+1x=y+1;/是表達(dá)式語句是表達(dá)式語句printf(printf(“x=%dx=%d n n”,n ),n );/函數(shù)調(diào)用語句函數(shù)調(diào)用語句a=3*4, a*5,a+8a=3*4, a*5,a+8;/逗號表達(dá)式語句逗號表達(dá)式語句十一、十一、C C語言的運(yùn)算符、優(yōu)先級、結(jié)合性和運(yùn)語言的運(yùn)算符、優(yōu)先級、結(jié)合性和運(yùn)算對象算對象優(yōu)優(yōu)先先級級類類別別運(yùn)算運(yùn)算符符含義含義要求運(yùn)算要

50、求運(yùn)算對象的個對象的個數(shù)數(shù)結(jié)合結(jié)合方向方向1 1初初等等運(yùn)運(yùn)算算符符( ) - - . .圓括號圓括號下標(biāo)運(yùn)算符下標(biāo)運(yùn)算符指向結(jié)構(gòu)體成員運(yùn)指向結(jié)構(gòu)體成員運(yùn)算符算符結(jié)構(gòu)體成員運(yùn)算符結(jié)構(gòu)體成員運(yùn)算符自自左左至至右右附錄附錄III III 運(yùn)算符運(yùn)算符和和結(jié)合性結(jié)合性優(yōu)優(yōu)先先級級類類別別運(yùn)算符運(yùn)算符含義含義要求運(yùn)算要求運(yùn)算對象的個對象的個數(shù)數(shù)結(jié)合結(jié)合方向方向2 2單單目目運(yùn)運(yùn)算算符符! ! +- -( (類型類型) )* *& &sizeofsizeof邏輯非運(yùn)算符邏輯非運(yùn)算符按位取反運(yùn)算符按位取反運(yùn)算符自增運(yùn)算符自增運(yùn)算符自減運(yùn)算符自減運(yùn)算符負(fù)號運(yùn)算符負(fù)號運(yùn)算符類型轉(zhuǎn)換運(yùn)算符類型轉(zhuǎn)

51、換運(yùn)算符指針運(yùn)算符指針運(yùn)算符地址與運(yùn)算符地址與運(yùn)算符長度運(yùn)算符長度運(yùn)算符(1 1)單目運(yùn)算單目運(yùn)算符符自自右右至至左左要求運(yùn)算對要求運(yùn)算對象的個數(shù)象的個數(shù)結(jié)合結(jié)合方向方向(2 2)雙目運(yùn)算符雙目運(yùn)算符自左自左至右至右(2 2)雙目運(yùn)算符雙目運(yùn)算符自左自左至右至右優(yōu)優(yōu)先先級級優(yōu)優(yōu)先先級級類類別別類類別別運(yùn)算運(yùn)算符符運(yùn)算運(yùn)算符符含義含義含義含義3 3 3 3算算術(shù)術(shù)運(yùn)運(yùn)算算符符算算術(shù)術(shù)運(yùn)運(yùn)算算符符* */ /% %* */ /% %乘法運(yùn)算符乘法運(yùn)算符除法運(yùn)算符除法運(yùn)算符求余運(yùn)算符求余運(yùn)算符乘法運(yùn)算符乘法運(yùn)算符除法運(yùn)算符除法運(yùn)算符求余運(yùn)算符求余運(yùn)算符4 4 4 4+ +- -+ +- -加法運(yùn)算符

52、加法運(yùn)算符減法運(yùn)算符減法運(yùn)算符加法運(yùn)算符加法運(yùn)算符減法運(yùn)算符減法運(yùn)算符5 5 5 5位位運(yùn)運(yùn)算算位位運(yùn)運(yùn)算算左移運(yùn)算符左移運(yùn)算符右移運(yùn)算符右移運(yùn)算符左移運(yùn)算符左移運(yùn)算符右移運(yùn)算符右移運(yùn)算符(2 2)雙目運(yùn)算符雙目運(yùn)算符自左自左至右至右優(yōu)優(yōu)先先級級類類別別運(yùn)算運(yùn)算符符含義含義6 6關(guān)關(guān)系系運(yùn)運(yùn)算算 = =小于小于小于等于小于等于大于大于大于等于大于等于7 7=!= =等于等于不等于不等于要求運(yùn)算要求運(yùn)算對象的個對象的個數(shù)數(shù)結(jié)合方結(jié)合方向向(2 2)雙目運(yùn)算雙目運(yùn)算符符自左自左至右至右自左自左至右至右(2 2)雙目運(yùn)算雙目運(yùn)算符符自左自左至右至右自左自左至右至右優(yōu)優(yōu)先先級級類類別別運(yùn)算運(yùn)算符符含義

53、含義8 8位位運(yùn)運(yùn)算算& &按位與運(yùn)算符按位與運(yùn)算符9 9 按位異或運(yùn)算符按位異或運(yùn)算符1010| |按位或運(yùn)算符按位或運(yùn)算符要求運(yùn)算要求運(yùn)算對象的個對象的個數(shù)數(shù)結(jié)合結(jié)合方向方向(2 2)雙目運(yùn)算雙目運(yùn)算符符自左自左至右至右(2 2)雙目運(yùn)算雙目運(yùn)算符符自左自左至右至右(2 2)雙目運(yùn)算雙目運(yùn)算符符自左自左至右至右優(yōu)優(yōu)先先級級類類別別運(yùn)算運(yùn)算符符含義含義1111邏邏輯輯運(yùn)運(yùn)算算&邏輯與運(yùn)算符邏輯與運(yùn)算符1212|邏輯或運(yùn)算符邏輯或運(yùn)算符要求運(yùn)算要求運(yùn)算對象的個對象的個數(shù)數(shù)結(jié)合結(jié)合方向方向(2 2)雙目運(yùn)算雙目運(yùn)算符符自左自左至右至右(2 2)雙目運(yùn)算雙目運(yùn)算符符自左自左

54、至右至右優(yōu)優(yōu)先先級級類類別別運(yùn)算運(yùn)算符符含義含義1313條條件件運(yùn)運(yùn)算算? :? :條件運(yùn)算符條件運(yùn)算符要求運(yùn)算要求運(yùn)算對象的個對象的個數(shù)數(shù)結(jié)合結(jié)合方向方向(3 3)三目運(yùn)算三目運(yùn)算符符自右自右至左至左優(yōu)優(yōu)先先級級類類別別運(yùn)算符運(yùn)算符1414賦賦值值運(yùn)運(yùn)算算符符= += +=- -= *= *=/= %=/= %= = =&= =&= =!=!=1515逗逗號號,含義含義賦值運(yùn)算符賦值運(yùn)算符逗號運(yùn)算符逗號運(yùn)算符要求運(yùn)算要求運(yùn)算對象的個對象的個數(shù)數(shù)結(jié)合結(jié)合方向方向(2 2)雙目運(yùn)算雙目運(yùn)算符符自右自右至左至左自左自左至右至右2.6 2.6 輸入輸出補(bǔ)充輸入輸出補(bǔ)充介紹介紹getc

55、har(),putchar()getchar(),putchar()的應(yīng)用,與字符輸入輸出的應(yīng)用,與字符輸入輸出相關(guān)概念。相關(guān)概念。例例1 1:一個將輸入一個將輸入( (stdin)stdin)拷貝到輸出拷貝到輸出( (stdout)stdout)的文件拷貝程序的文件拷貝程序。算法描述:算法描述:讀入一個字符讀入一個字符while(while(字符不是文件結(jié)束標(biāo)志字符不是文件結(jié)束標(biāo)志) ) 輸出剛才讀入的字符;輸出剛才讀入的字符;再讀入下一個字符。再讀入下一個字符。 完整的程序:完整的程序:# #include include void main()void main()char c;char

56、 c;c=getchar();c=getchar();while( c != EOF )while( c != EOF )putchar(c);putchar(c);c=getchar();c=getchar(); 運(yùn)行測試結(jié)果:運(yùn)行測試結(jié)果:abcde12345abcde12345abcde12345abcde12345ZZ# #include include void main()void main()char c;char c;while(c=getchar()!=EOF) putchar(c);while(c=getchar()!=EOF) putchar(c); EOFEOF是文件結(jié)

57、束標(biāo)志。在是文件結(jié)束標(biāo)志。在“stdio.hstdio.h”中有如下定義:中有如下定義:# #define EOF define EOF - -1 1 程序運(yùn)行時,程序運(yùn)行時,getchar()getchar()遇文件結(jié)束標(biāo)志返回值遇文件結(jié)束標(biāo)志返回值- -1 1 ; ; UNIXUNIX系統(tǒng)鍵盤標(biāo)準(zhǔn)輸入文件的結(jié)束符號為:系統(tǒng)鍵盤標(biāo)準(zhǔn)輸入文件的結(jié)束符號為:CTRL+DCTRL+D ; 微機(jī)系統(tǒng)鍵盤標(biāo)準(zhǔn)輸入文件的結(jié)束符號為:微機(jī)系統(tǒng)鍵盤標(biāo)準(zhǔn)輸入文件的結(jié)束符號為:CTRL+ZCTRL+Z ;該程序可優(yōu)化該程序可優(yōu)化成如下形式:成如下形式: 鍵盤輸入的是一個字符流,空格是字符,回車也是鍵盤輸入的是一

58、個字符流,空格是字符,回車也是字符,除非使用格式符作數(shù)值的轉(zhuǎn)換處理。字符,除非使用格式符作數(shù)值的轉(zhuǎn)換處理。 C C表達(dá)式高效靈活,在一個表達(dá)式中可以完成多種功表達(dá)式高效靈活,在一個表達(dá)式中可以完成多種功能的運(yùn)算。這種運(yùn)算是按算符的優(yōu)先級和結(jié)合方向性,能的運(yùn)算。這種運(yùn)算是按算符的優(yōu)先級和結(jié)合方向性,逐步完成的。因此要注意表達(dá)式的實際運(yùn)算次序。逐步完成的。因此要注意表達(dá)式的實際運(yùn)算次序。# #include include void main()void main()char c;char c;while(c=getchar()!=EOF) putchar(c);while(c=getchar()

59、!=EOF) putchar(c); 該程序可優(yōu)化該程序可優(yōu)化成如下形式:成如下形式:例例1 1:自頂向下逐步求精的編程方法示例自頂向下逐步求精的編程方法示例為進(jìn)行交通流量的統(tǒng)計,在路邊設(shè)置了一個車輛探為進(jìn)行交通流量的統(tǒng)計,在路邊設(shè)置了一個車輛探測器,探測器用線路連接到計算機(jī)。當(dāng)有車輛通過時,測器,探測器用線路連接到計算機(jī)。當(dāng)有車輛通過時,探測器傳送信號探測器傳送信號1 1給計算機(jī);探測器中有一計時器,每給計算機(jī);探測器中有一計時器,每一秒鐘發(fā)出一個數(shù)字信號一秒鐘發(fā)出一個數(shù)字信號2 2傳送給計算機(jī),該計算機(jī)從傳送給計算機(jī),該計算機(jī)從開始探測時計時,探測結(jié)束時傳遞一個數(shù)字信號開始探測時計時,探測

60、結(jié)束時傳遞一個數(shù)字信號0 0給計給計算機(jī),編寫程序讀入這一系列的信號并輸出下列結(jié)果:算機(jī),編寫程序讀入這一系列的信號并輸出下列結(jié)果: 進(jìn)行了多長時間的統(tǒng)計調(diào)查;進(jìn)行了多長時間的統(tǒng)計調(diào)查; 記錄到的車輛數(shù);記錄到的車輛數(shù); 在車輛之間最長的時間間隔是多少在車輛之間最長的時間間隔是多少一、數(shù)據(jù)分析一、數(shù)據(jù)分析1 1 車輛通過車輛通過輸入信號(輸入信號(signsign)2 2 秒鐘信號秒鐘信號0 0 探測結(jié)束探測結(jié)束進(jìn)行了多長時間的統(tǒng)計調(diào)查(進(jìn)行了多長時間的統(tǒng)計調(diào)查(secondsseconds)記錄到的車輛數(shù)(記錄到的車輛數(shù)(numsnums)在車輛之間最長的時間間隔(在車輛之間最長的時間間隔(longestlongest)是多少是多少, ,由此派生出的車輛間隔變量由此派生出的車輛間隔變量(interinter)要求要求輸出輸出結(jié)果結(jié)果進(jìn)行了多長時間的

溫馨提示

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

最新文檔

評論

0/150

提交評論