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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

3、小數(shù)分別存放, ,近似表示。近似表示。1.1.專用符號專用符號: : + +,- -,* *,/ /,;,;等等多為操作運算符多為操作運算符。2.2.單詞單詞: : 保留字(關鍵字)保留字(關鍵字):具有固定含義的字,作用是用來具有固定含義的字,作用是用來命名命名C C語句、數(shù)據(jù)類型、變量屬性及個別運算符,一律用語句、數(shù)據(jù)類型、變量屬性及個別運算符,一律用小寫字母表示。小寫字母表示。數(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預處理:預處理:define, include, undef, ifdef, ifndef, endif,; 2.2 2.2 基本語法單位基本語法單位 用戶標識符用戶標識符作用作用:標記常數(shù)、變量、自定義數(shù)據(jù)類型、函數(shù)及標記常數(shù)、變量、自定義數(shù)據(jù)類型、函數(shù)及程序的名字程序的名字 取名規(guī)則取名規(guī)則:

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

6、,但只識別前標識符長度不限,但只識別前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ù):值域:值域之間,之間,n n為機器字長;為機器字長;例:例:123123,100100 長整數(shù)常數(shù)長整數(shù)常數(shù):值域:值域之間,占兩個機器字長之間,占兩個機器字長,表

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

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

9、小數(shù)部分不能同時缺?。环植荒芡瑫r缺?。?如果一個實常數(shù)有一個小數(shù)點,則小數(shù)點左右至少有一邊有數(shù)字;如果一個實常數(shù)有一個小數(shù)點,則小數(shù)點左右至少有一邊有數(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:當數(shù)值大于:當數(shù)值大于10103838時時產生上溢,小于產生上溢,小于1010- -3838時產生下溢,通常用時產生下溢,通常用0 0近似,近似,一般一個普通實常數(shù)在機內表示時具有一般一個普通實常數(shù)在機內表示時具有6 67 7位十進位十進制有效數(shù)字,雙精度實數(shù)具有制有效數(shù)字,雙精度實數(shù)具有1616位十進制有效數(shù)字。位十進制有效數(shù)字。算術常數(shù)算術常數(shù) ( (實型常數(shù)實型常數(shù) ) )字符常數(shù)字符常數(shù)(單個字符(簡稱字符)和字符串)(單個字符(簡稱字符)和字符串)單個字符常數(shù)單個字符常數(shù):是由一對單引號括起來的單個字符或轉義字:是由一對單引號括起來

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

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

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

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

15、由于字符串末尾都被加上 0 0串結束串結束符,所以字符串在內部表示所占的空間要比實符,所以字符串在內部表示所占的空間要比實際字符多一個字節(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在內存中在內存中邏輯形態(tài)邏輯形態(tài)A由于字符串末尾

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

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

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

19、定義一般形式:類型類型變量標識符表;變量標識符表; 整型變量的定義整型變量的定義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,雙精度僅,雙精度僅提高精度。提高精度。 在運算過程中,單精度變量的值總是轉換為雙精度在運算過程中,單精度變量的值總是轉換為雙精度后再參與運算的,目的是提高精度。后再參與運算的,目的是提高精度。 實型變量的定義實型變量的定義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;/轉換為大寫字母轉換為大寫字母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ù)值運算,字符型量可直接參與數(shù)值運算,它的值是該變量當前所含字符在它的值是該變量當前所含字符在字符集中的序數(shù)值,因此實際上字符集中的序數(shù)值,因此實際上是一個整數(shù)值是一個整數(shù)值 。 字符型量與整數(shù)的關系及其數(shù)值運算和輸出形式11000010字符字符a a和和b b的存儲形式同整數(shù)的存儲形式同整數(shù)9797和和9898,實際上是一,實際上是一個整數(shù)值;由此個整數(shù)值;由此C C語言中字符型量從屬與整型數(shù)據(jù),可語言中字符型量從屬與整型數(shù)據(jù),可參與算術運算;參與算術運算;由此字符型量既可用字符形式由此字符型量既可用字符形式% %c c輸出,也可采用整輸出,也可采用整型型% %d d輸出,具體

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

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

25、。它只是作為字符串的結束標志而已。此規(guī)定是為了編譯只是作為字符串的結束標志而已。此規(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ù)組名代表相應數(shù)組存儲單元的起始地址,即通過數(shù)組名代表相應數(shù)組存儲單元的起始地址,即通過數(shù)組名可以查找定位相應字符串的存儲位置,可以說數(shù)組名可以查找定位相應字符串的存儲位置,可以說字符數(shù)組名代表相應字符串。當數(shù)組名作為函數(shù)的參字符數(shù)組名代表相應字符串。當數(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ù)類型 變量名變量名 = 常量表達式;常量表達式;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í)行語句,運執(zhí)行語句,運行期間有效。行期間

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

46、轉換 整型與浮點數(shù)之間整型與浮點數(shù)之間的轉換,低級向高級轉的轉換,低級向高級轉換。換。 整型量有符號與無整型量有符號與無符號之間的轉換和長字符號之間的轉換和長字節(jié)的轉換。節(jié)的轉換。doublefloatint unsignedlongcharshort例:設例:設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、雙雙運算是逐步完成的,類型轉換由系統(tǒng)自動進行。運算是逐步完成的,類型轉換由系統(tǒng)自動進行。 (2 2)賦值轉換賦值轉換:其值和類型由賦值運算符左邊的變量確定。其值和類型由賦值運算符左邊的變量確定。(3 3)強制類型轉換:語法形式)強制類型轉換:語法形式(類型標識符)表達式(類型標識符)表達式作用:將表達式的值顯式地轉換成所指定的類型。作用:將表達式的值顯式地轉換成所指定的類型。例:設例:設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、)九、長度運算符九、長度運算符語法形式:語法形式:例:例:sizeof(int)sizeof(int)/結果一般為結果一般為4 4sizeof(double) /sizeof(double) /結果一般為結果一般為8 8sizeof(sizeof(類型標識符類型標識符) ) 或或sizeof sizeof 表達式表達式作用:給出其運算對象以字節(jié)為單位的存儲單元的長度。作用:給出其運算對象以字節(jié)為單位的存儲單元的長度。十、表達式語句十、表達式語句語法形式:語法形式:例:例:i+i+x=y+1x=y+1/是表達式是表達式printf(printf(“x=%dx=%d n n”,n ) ,n ) /

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

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

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

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

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

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

55、har(),putchar()getchar(),putchar()的應用,與字符輸入輸出的應用,與字符輸入輸出相關概念。相關概念。例例1 1:一個將輸入一個將輸入( (stdin)stdin)拷貝到輸出拷貝到輸出( (stdout)stdout)的文件拷貝程序的文件拷貝程序。算法描述:算法描述:讀入一個字符讀入一個字符while(while(字符不是文件結束標志字符不是文件結束標志) ) 輸出剛才讀入的字符;輸出剛才讀入的字符;再讀入下一個字符。再讀入下一個字符。 完整的程序:完整的程序:# #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(); 運行測試結果:運行測試結果:abcde12345abcde12345abcde12345abcde12345ZZ# #include include void main()void main()char c;char c;while(c=getchar()!=EOF) putchar(c);while(c=getchar()!=EOF) putchar(c); EOFEOF是文件結

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

58、個字符流,空格是字符,回車也是字符,除非使用格式符作數(shù)值的轉換處理。字符,除非使用格式符作數(shù)值的轉換處理。 C C表達式高效靈活,在一個表達式中可以完成多種功表達式高效靈活,在一個表達式中可以完成多種功能的運算。這種運算是按算符的優(yōu)先級和結合方向性,能的運算。這種運算是按算符的優(yōu)先級和結合方向性,逐步完成的。因此要注意表達式的實際運算次序。逐步完成的。因此要注意表達式的實際運算次序。# #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:自頂向下逐步求精的編程方法示例自頂向下逐步求精的編程方法示例為進行交通流量的統(tǒng)計,在路邊設置了一個車輛探為進行交通流量的統(tǒng)計,在路邊設置了一個車輛探測器,探測器用線路連接到計算機。當有車輛通過時,測器,探測器用線路連接到計算機。當有車輛通過時,探測器傳送信號探測器傳送信號1 1給計算機;探測器中有一計時器,每給計算機;探測器中有一計時器,每一秒鐘發(fā)出一個數(shù)字信號一秒鐘發(fā)出一個數(shù)字信號2 2傳送給計算機,該計算機從傳送給計算機,該計算機從開始探測時計時,探測結束時傳遞一個數(shù)字信號開始探測時計時,探測

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

溫馨提示

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

評論

0/150

提交評論