




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語言程序設(shè)計(jì),第二講,(1)C 文件可以由一個(gè)或多個(gè)C源程序組成,(2)C 源程序可以由一個(gè)或多個(gè)函數(shù)組成,(3)C 文件有且僅有一個(gè)主函數(shù)(main函數(shù)),(4)C 源程序中用預(yù)處理命令調(diào)用庫(kù)函數(shù)或其它程序。,(5)每個(gè)執(zhí)行語句以分號(hào)結(jié)尾。,(6)變量要先定義再應(yīng)用,上節(jié)提要:,(7)一個(gè)函數(shù)由兩部分組成:,函數(shù)的說明部分:函數(shù)名后有一對(duì)圓括號(hào),函 數(shù) 體 部 分:花括號(hào)+執(zhí)行語句,(8)C 程序書寫區(qū)分大小寫,(9)printf (“格式化字符串”,參數(shù)表)。,(10)可以用/* */或 / 對(duì)C源程序做注解,上節(jié)提要:,語言的字符集,每一種可書寫的語言,全部可用的字符的集合稱為字符集
2、英語的字符集 a-z 26個(gè)字母 阿拉伯?dāng)?shù)字的字符集為0-9 漢語的字符集 (中文字符,太多了) 兩個(gè)或兩個(gè)以上的字符組合稱為詞匯。,語言的字符集,語言字符集由字母,數(shù)字,空格,標(biāo)點(diǎn)和特殊字符組成。在字符常量,字符串常量和注釋中還可以使用漢字或其它可表示的圖形符號(hào)。 1.字母大小寫英文字母 2.數(shù)字09 3.空白符 空格符、制表符(t)、換行符(n)等統(tǒng)稱為空白符。 空白符只在字符常量和字符串常量中起作用。 4.標(biāo)點(diǎn)和特殊字符 標(biāo)點(diǎn): 冒號(hào),逗號(hào),大中小括號(hào) 特殊字符:+ - * / % 等,一、語言詞匯 在語言中使用的詞匯分為六類:標(biāo)識(shí)符,關(guān)鍵字,運(yùn)算符,分隔符,常量,注釋符等。 1.標(biāo)識(shí)符
3、 在程序中使用的變量名、函數(shù)名、標(biāo)號(hào)等統(tǒng)稱為標(biāo)識(shí)符。 除庫(kù)函數(shù)的函數(shù)名由系統(tǒng)定義外,其余都由用戶自定義。 標(biāo)識(shí)符是只能由字母、數(shù)字和下劃線(_)組成的字符串,并且其第一個(gè)字符必須是字母或下劃線。,由英文字母、數(shù)字和下劃線組成,大小寫敏感 不可以是數(shù)字開頭 直觀,見名知意,便于記憶和閱讀 最好使用英文單詞或其組合 切忌使用漢語拼音 下劃線和大小寫通常用來增強(qiáng)可讀性 Variablename(太長(zhǎng),不建議) variable_name (UNIX風(fēng)格) VariableName, variableName (Windows風(fēng)格) 不允許使用關(guān)鍵字作為標(biāo)識(shí)符的名字 int, float, for,
4、while, if等 某些功能的變量采用習(xí)慣命名 如:for語句所采用的循環(huán)變量習(xí)慣用i, j, k,標(biāo)識(shí)符命名,在使用標(biāo)識(shí)符時(shí)還必須注意以下幾點(diǎn): (1)標(biāo)準(zhǔn)C不限制標(biāo)識(shí)符的長(zhǎng)度,但它受各種版本的C 語言編譯系統(tǒng)限制,同時(shí)也受到具體機(jī)器的限制。例如在某版本C 中規(guī)定標(biāo)識(shí)符前八位有效,當(dāng)兩個(gè)標(biāo)識(shí)符前八位相同時(shí),則被認(rèn)為是同一個(gè)標(biāo)識(shí)符。 定義標(biāo)識(shí)符最好不要超過8個(gè)。 (2)在標(biāo)識(shí)符中,大小寫是有區(qū)別的。例如BOOK和book 是兩個(gè)不同的標(biāo)識(shí)符。 最好全部用小寫 (3)標(biāo)識(shí)符雖然可由程序員隨意定義,但標(biāo)識(shí)符是用于標(biāo)識(shí)某個(gè)量的符號(hào)。因此,命名應(yīng)盡量有相應(yīng)的意義,以便于閱讀理解,作到“顧名思義”。,
5、以下標(biāo)識(shí)符是合法的: a, x, x3, BOOK_1, sum5 以下標(biāo)識(shí)符是非法的: 3s 以數(shù)字開頭 U.S 中間有非法字符. s*T 出現(xiàn)非法字符* -3x 以減號(hào)開頭 bowy-1 出現(xiàn)非法字符-(減號(hào)) Good bye 中間有空格 int 關(guān)鍵字,2.關(guān)鍵字 關(guān)鍵字是由語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標(biāo)識(shí)符不應(yīng)與關(guān)鍵字相同。語言的關(guān)鍵字分為以下幾類: (1)類型說明符 用于定義、說明變量、函數(shù)或其它數(shù)據(jù)結(jié)構(gòu)的類型。如int,double (2)控制語句符 用于表示一個(gè)語句的功能。如if 就是條件語句的語句定義符。,ANSI C一共只有32個(gè)關(guān)鍵字,(1
6、) 數(shù)據(jù)類型說明符(12個(gè)) 長(zhǎng)短(單)雙正負(fù) long short double unsigned singned 無值整型浮點(diǎn)字符(指針)void int float char 聯(lián)合枚舉結(jié)構(gòu)(數(shù)組) union struct enum (2) 變量類型(4個(gè)): 外部 靜態(tài)自動(dòng) 寄存器 extern static auto register (3)常量(1個(gè)): const,(2)程序結(jié)構(gòu)語句定義符(12個(gè)) 判斷: If else 循環(huán): for do while 轉(zhuǎn)移:goto 跳出: break continue 返回:return 開關(guān):switch case default,3、
7、其它關(guān)鍵字 sizeof 大小 typedef類型定義 volatile可變的變量,數(shù)據(jù)為什么要區(qū)分類型? 不同類型的數(shù)據(jù)代表不同的 數(shù)據(jù)表示形式 合法的取值范圍 占用內(nèi)存空間大小 可參與的運(yùn)算種類,數(shù)據(jù)類型(Data Type),語言的數(shù)據(jù)類型,數(shù)據(jù)類型是按被說明變量的性質(zhì),表示形式,占據(jù)存儲(chǔ)空間的多少,構(gòu)造特點(diǎn)來劃分的。 在語言中,數(shù)據(jù)類型可分為:基本數(shù)據(jù)類型,構(gòu)造數(shù)據(jù)類型,指針類型,空類型四大類。 數(shù)據(jù)類型:基本 構(gòu)造 空 指針,基本類型,構(gòu)造類型,指針類型,空類型 void,整型,浮點(diǎn)型(實(shí)型),字符型 char,枚舉類型 enum,基本整型 (singned) int,長(zhǎng)整型 lon
8、g (int),短整型 short (int),數(shù)據(jù)類型,無符號(hào)整型 unsigned (int),單精度實(shí)型 float,雙精度實(shí)型 double,數(shù)組類型,結(jié)構(gòu)體類型 struct,聯(lián)合類型 union,數(shù)據(jù)類型(Data Type),1、基本數(shù)據(jù)類型:基本數(shù)據(jù)類型最主要的特點(diǎn)是,其值不可以再分解為其它類型。也就是說,基本數(shù)據(jù)類型是自我說明的。 2、構(gòu)造數(shù)據(jù)類型:構(gòu)造數(shù)據(jù)類型是根據(jù)已定義的一個(gè)或多個(gè)數(shù)據(jù)類型用構(gòu)造的方法來定義的。也就是說,一個(gè)構(gòu)造類型的值可以分解成若干個(gè)“成員”或“元素”。每個(gè)“成員”都是一個(gè)基本數(shù)據(jù)類型或又是一個(gè)構(gòu)造類型。 在C語言中,構(gòu)造類型有以下幾種: 數(shù)組類型 結(jié)構(gòu)
9、體類型 聯(lián)合類型,計(jì)算機(jī)中的數(shù)據(jù)單位: b, B, KB, MB, GB, TB,bit,位 b Byte,字節(jié) B Kilobyte(KB), K Megabyte(MB),兆 M Gigabyte(GB),G Terabyte(TB),T,1 TB = 1,024 GB,1 GB = 1,024 MB,1 MB = 1,024 KB,1 KB = 1,024 B,1 B = 8 b,思考:為什么是1024而不是更容易計(jì)算的1000? 1024是2的10次方,注意:硬盤的容量計(jì)算與此不同,硬盤的1K是1000,思考:為什么是8而不是更直觀的10?,int 整數(shù),在目前絕大多數(shù)機(jī)器上占4個(gè)字節(jié)
10、。TC2中是2個(gè)字節(jié) int a=64; float 浮點(diǎn)數(shù) 單精度浮點(diǎn)數(shù),一般是4個(gè)字節(jié)長(zhǎng) float b=64.0; char 字符 字符,一般是1個(gè)字節(jié)長(zhǎng) 用來表示256個(gè)ASCII字符,或者0-255的整數(shù)。 char=a ;,基本數(shù)據(jù)類型,short int,短整型,2個(gè)字節(jié)。通常簡(jiǎn)寫為short long int,長(zhǎng)整型,4個(gè)字節(jié)。通常簡(jiǎn)寫為long single 單精度浮點(diǎn)數(shù) 4個(gè)字節(jié) double 雙精度浮點(diǎn)數(shù)8個(gè)字節(jié) long double ? signed 用來修飾char、int、short和long,說明他們是有符號(hào)的整數(shù)(正整數(shù)、0和負(fù)整數(shù))。一般缺省都是有符號(hào)的,所
11、以這個(gè)修飾符通常省略 unsigned 用來修飾char、int、short和long,說明他們是無符號(hào)的整數(shù)(正整數(shù)和0),數(shù)據(jù)類型修飾符,數(shù)據(jù)的存儲(chǔ)形式,計(jì)算機(jī)中,所有的數(shù)據(jù)都是以二進(jìn)制進(jìn)行存儲(chǔ)的。 因?yàn)橛靡粋€(gè)兩位的十六進(jìn)制數(shù)就可以表示8位的二進(jìn)制數(shù),為方便閱讀,都是以16進(jìn)制的形式寫出。 常用字符與ASCII碼對(duì)應(yīng)。,使用ULTRAEDIT打開flashfxp.exe文件,進(jìn)行十六進(jìn)制編輯:,以13為例: 二進(jìn)制數(shù)為:1101 int型 (2字節(jié),15位有效數(shù)字,最高位為符號(hào)位):,long int型 (4字節(jié), 31位有效數(shù)字,最高位為符號(hào)位) :,unsigned int型(2字節(jié),
12、16位有效數(shù)字,無符號(hào)位) :,unsigned long int型( 4字節(jié), 31位有效數(shù)字,無符號(hào)位) :,整型數(shù)據(jù) 在內(nèi)存中的存放形式,0D,0D 00,0D,0D 00,Turbo C中各類整型量所分配的內(nèi)存字節(jié)數(shù)及數(shù)的表示范圍。,TC2中int的范圍是-3276832767 如果我們給它一個(gè)小于-32768或者大于32767的數(shù)會(huì)如何呢?,小蛇能吞下大象嗎?,超出取值范圍會(huì)怎樣?,一臺(tái)安裝了Windows 95/98的機(jī)器,如果連續(xù)運(yùn)行49.7天沒有重新啟動(dòng),可能死機(jī) 原因: Windows自啟動(dòng)時(shí)刻起,有一個(gè)計(jì)數(shù)器,記錄系統(tǒng)已經(jīng)運(yùn)行了多少毫秒。這個(gè)計(jì)數(shù)器是個(gè)unsigned lo
13、ng 類型的變量 unsigned long 的最大值是:4294967295 一天有 24*60*60*1000 = 86400000毫秒 4294967295 / 86400000 = 49.71026961805 當(dāng)49.7天的時(shí)候,此計(jì)數(shù)器會(huì)溢出,引起死機(jī),溢出(Overflow)造成的危害,2 浮點(diǎn)型數(shù)據(jù),浮點(diǎn)型常量的表示方法,兩種表 示形式,小數(shù) 指數(shù),0.123 1.23e-3,注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù),1e3、1.8e-3、-123e-6、-.1e-3 e3、2.1e3.5、.e3、e,3.4 浮點(diǎn)型數(shù)據(jù),規(guī)范化的指數(shù)形式: 在字母e(或E)
14、之前的小數(shù)部分中,小數(shù)點(diǎn)左邊 應(yīng)有一位(且只能有一位)非零的數(shù)字. 例如: 123.456可以表示為: 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e 其中的1.23456e3稱為“規(guī)范化的指數(shù)形式”。,3.4 浮點(diǎn)型數(shù)據(jù),3.4.2 浮點(diǎn)型變量 (1)浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式 一個(gè)浮點(diǎn)型數(shù)據(jù)一般在內(nèi)存中占4個(gè)字節(jié)(32位)。與整型數(shù)據(jù)的存儲(chǔ)方式不同,浮點(diǎn)型數(shù)據(jù)是按照指數(shù)形式存儲(chǔ)的。系統(tǒng)把一個(gè)浮點(diǎn)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式。,圖3-7,計(jì)算機(jī)中用二進(jìn)制表示浮
15、點(diǎn)數(shù),使用二進(jìn)制表示只有0和1,那么對(duì)于小數(shù)就只能用下面的方式來表示:a12-1+a22-2+a32-3+.+an2-n 其中a1等數(shù)可以是0或者1,從理論上將,使用這種表示方法可以表示一個(gè)有限的小數(shù)。,IEEE 754標(biāo)準(zhǔn),一個(gè)浮點(diǎn)數(shù)V 在IEEE 754標(biāo)準(zhǔn)中可以用 V (-1)SM2E 的形式表示 在表示浮點(diǎn)數(shù)時(shí), 每個(gè)浮點(diǎn)數(shù)均由三部分組成: 符號(hào)位S, 指數(shù)部分E和 有效數(shù)字 M S=0表示正數(shù), S=1表示負(fù)數(shù) 有效數(shù)字M是二進(jìn)制小數(shù),M的每一位數(shù)只能是0或1,以0.75為例 十進(jìn)制數(shù) 0.75 = 0.5+0.25 =1*1/2 + 1*1/4 =1*2-1+ 1*2-2 寫成二進(jìn)
16、制的格式: 0.75 d =1.1 * 2-1 b,219.125 d = 11011011.001 b 換算過程: =1*128+1*64+0*32+1*16+1*8+0*4+1*2+1*1+0*0.5+0*0.25+1*0.125 =1*27+1*26+0*25+1*24+1*23+0*22+1*21+1*20+0*2-1+0*2-2+1*2-3 = 1101 1011.001 b = 1.101 1011001 *27 b,寫成計(jì)算機(jī)存儲(chǔ)的規(guī)范格式 0 1000 0110 1011 0110 0100 0000 0000 000,符號(hào)位 s , 正數(shù)則 s = 0,指數(shù)位E :用127代
17、表0,E大于0則為127+E, E小于0則為127-E,省略整數(shù)1后得到有效數(shù)字(或稱尾數(shù)),219.125 d = 1.101 1011 001 27,類型 位數(shù) 數(shù)的范圍 有效數(shù)字 float 32 -3.410-383.41038 67 位 double型 64 -1.710-3081.710308 1516位 long double 128 -1.210-49321.2104932 1819位,浮點(diǎn)型數(shù)據(jù)的有效位數(shù),(2) 浮點(diǎn)型變量的分類 浮點(diǎn)型變量分為單精度(float型)、雙精度(double型)和長(zhǎng)雙精度型(long double)三類形式。,有效數(shù)是M(23位) 1111 1
18、111 1111 1111 1111 1111 111 B = 8388607 D,3.2 常量與變量,3.2.1 常量和符號(hào)常量 在程序運(yùn)行過程中,其值不能被改變的量稱為常量 常量區(qū)分為不同的類型:,整型 100,012,0 xFF 實(shí)型 3.14 , 1.23E2 字符型 a, 2,72 字符串 “a”, “ab”,“1232” 符號(hào)常量 #define PRICE 30,整型常量 18、-31 長(zhǎng)整型常量 123l、123L、123456l、123456L 無符號(hào)型常量 123u、 123U 浮點(diǎn)常量 十進(jìn)制小數(shù)形式 123.45、456.78 指數(shù)形式 1e-2、4.5e3 單精度實(shí)型
19、常量 123.45f、 456.78F、1e-2f、4.5e3F 長(zhǎng)雙精度型常量 123.45l、 456.78L、1e-2l、4.5e3L (沒有長(zhǎng)單精度的說法),常量(Constant),以數(shù)字“0”開始的整型常量是八進(jìn)制數(shù) 022、-037 010和10大小不一樣 因?yàn)榘诉M(jìn)制并不常用,所以此種表示法比較少見 以“0 x”或者“0X”開始的整型常量是十六進(jìn)制 A-F和a-f用來表示十進(jìn)制的10-15 十六進(jìn)制的形式比較常用,尤其在進(jìn)行位一級(jí)的控制的時(shí)候 0 x12、-0 x1F, -0 x1f,八進(jìn)制與十六進(jìn)制常量,練習(xí):,寫出以下程序的執(zhí)行結(jié)果: void main() int a,b,
20、c; a=12; b=012; c=0 x12; printf(%d, %d, %d,a, b, c); ,練習(xí),找出下列程序中的錯(cuò)誤:,void main() int a,b,c,d,e,f,g; a=0X2A; b=0XA0; c=5A; d=0XFFFF; e=0X3H; f=019; g=003; printf(%d,%d,%d,%d,%d,%d,%d,a,b,c,d,e,f,g); ,字符常數(shù)為用單引號(hào)擴(kuò)起的一個(gè)字符: a, A , 5 , % , $ 單引號(hào)內(nèi)只能有一個(gè)字符,除非用開頭 其值為整數(shù),也可以參與各種數(shù)學(xué)運(yùn)算 每個(gè)字符具有一個(gè)0-255之間的數(shù)值,可從ASCII表查出
21、注意: 5 和整數(shù)5的區(qū)別 字符的數(shù)學(xué)運(yùn)算在密碼學(xué)內(nèi)用得比較多,字符(Character)常量,例:向字符變量賦以整數(shù)。 #include void main() char c1,c2; c1=97; c2=98; printf(%c %cn,c1,c2); printf(%d %dn,c1,c2); ,說明:在第和第4行中,將整數(shù)和分別賦給c1和c2,它的作用相當(dāng)于以下兩個(gè)賦值語句: c1;c2; 因?yàn)閍和b的ASCII碼為和,運(yùn)行結(jié)果: 97 98,3.5字符型數(shù)據(jù),3.5.3字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法 將一個(gè)字符常量放到一個(gè)字符變量中,實(shí)際上并不是把該字符本身放到內(nèi)存單元中去
22、,而是將該字符的相應(yīng)的ASCII代碼放到存儲(chǔ)單元中。,這樣使字符型數(shù)據(jù)和整型 數(shù)據(jù)之間可以通用。一個(gè) 字符數(shù)據(jù)既可以以字符形 式輸出,也可以以整數(shù)形 式輸出。,轉(zhuǎn)義字符 一些特殊字符(無法從鍵盤輸入或者另有它用)用轉(zhuǎn)義字符表示,字符常數(shù),小寫字母轉(zhuǎn)換為大寫字母,Char 型與 int 型之間的關(guān)系,例2.4,例2.5,以字符型和整數(shù)型兩種格式輸出字符變量。,main() char ch = a; /*定義 ch 為字符型變量*/ printf(%c, %dn, ch, ch); /*分別以字符形式、整數(shù)形式輸出ch */ ,main() char ch = b; ch = b - 32; pr
23、intf(%c, %dn, ch, ch); ,用雙引號(hào)括住的由0個(gè)或多個(gè)字符組成的字符序列 I am a string 表示空字符串 轉(zhuǎn)義字符也可以在字符串中使用 引號(hào)只作為字符串開始和結(jié)束的標(biāo)志 C語言內(nèi)部用 0 表示字符串的結(jié)束 除注釋外,是唯一可以出現(xiàn)中文的地方 x和x是不同的 里定義了一系列專門的字符串處理函數(shù),字符串(String)常數(shù),練習(xí):寫出以下程序的執(zhí)行結(jié)果:,#include stdio.h main() int a, b=322; float x, y=8.88; char c1=k, c2; a=y; printf(a=%dn,a); x=b; a=c1; c2=b;
24、 printf(%ft, %dt, %ct, x, a, c2); ,宏常量 也稱符號(hào)常量 一般采用大寫字母表示 #define 標(biāo)識(shí)符 字符串 不是語句,而是一種編譯預(yù)處理命令 宏替換(Macro Substitulition),#include #define PI 3.14159 #define R 5.3 main() printf(area = %fn, PI * R * R); printf(circumference = %fn, 2 * PI * R); ,宏常量,例2.2,習(xí)慣上符號(hào)常量的標(biāo)識(shí)符用大寫字母,變量標(biāo)識(shí)符用小寫字母,以示區(qū)別。,用const修飾定義的變量為常量 c
25、onst float pi = 3.1425926; 常量只能在定義時(shí)賦值,然后不能再改變其值,const常量,main() const float a=3.5; float b=a; a=a+2; b=b+2; printf(%f,%f, a, b); ,練習(xí):找出下列程序的錯(cuò)誤:,3.2 變量,3.2.2變量 變量的值存放在特定存儲(chǔ)單元中的數(shù)據(jù),在程序運(yùn)行期間,變量的值是可以改變的。 變量名對(duì)應(yīng)著內(nèi)存空間中的某個(gè)地址,在對(duì)程序編譯連接時(shí)由編譯系統(tǒng)給每一個(gè)變量名分配對(duì)應(yīng)的內(nèi)存地址。從變量中取值,實(shí)際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)。,變 量,使用變量的基本原則 變量必
26、須先定義,后使用 所有變量必須在第一條可執(zhí)行語句前定義 不同變量定義的順序無關(guān)緊要 一條定義語句可定義若干個(gè)同類型的變量 定義變量,是初始化變量的最好時(shí)機(jī) 不被初始化的變量,其值為危險(xiǎn)的隨機(jī)數(shù) char esc = a; int i = 1; int sum = 0; float eps = 1.0e-5;,練習(xí):寫出以下程序的執(zhí)行結(jié)果,#include main() int a=1, b=2, c; float f1=1.0, f2=2.0, f3=3.0; char ch1=a, ch2=b; printf(a=%d, b=%d, c=%dnn, a, b, c); printf(%f,
27、%2.0f, %3.2fnn, f1, f2, f3); printf(%c, %cn, ch1+1, ch2+3); ,float型數(shù)據(jù)提供7位有效數(shù)字 double型數(shù)據(jù)提供16位有效數(shù)字 使用不當(dāng)導(dǎo)致舍入誤差,#include main() float a; double b; a = 123456.789e4; b = 123456.789e4; printf(%fn %fn,a, b); ,實(shí)型數(shù)據(jù)提供的有效數(shù)字位數(shù),#include main() float f; f = 123.456; if (f = 123.456) printf(f is equal to 123.456
28、indeed.); else printf(In fact, f is equal to %fn, f); 運(yùn)行結(jié)果會(huì)是什么?,浮點(diǎn)數(shù)的陷阱,不要輕易使用單精度浮點(diǎn)來進(jìn)行判斷。,float的精度低,較易發(fā)生精度帶來的相等性判斷問題 double精度高,這個(gè)問題發(fā)生的概率小一些,但也存在 解決辦法:if (fabs(f 123.456) 1E-5),根據(jù)精度要求設(shè)定,浮點(diǎn)數(shù)的陷阱,變量賦初值,在程序中常常需要對(duì)變量賦初值,以便使用變量。語言程序中可有多種方法為變量提供初值。 在變量定義中賦初值的一般形式為: 類型說明符 變量1= 值1,變量2= 值2,; 例如: int a=3; int b,c
29、=5; float x=3.2,y=3f,z=0.75; char ch1=K,ch2=P; 應(yīng)注意,在定義中不允許連續(xù)賦值,如int a=b=c=5是不合法的。,2.6.2 算術(shù)運(yùn)算符,+,-,*,/ 加、減、乘、除運(yùn)算 四則混合運(yùn)算中,先算乘除,后算加減,按從左向右的順序計(jì)算,左結(jié)合 - 取負(fù)值運(yùn)算符,右結(jié)合 % 求余運(yùn)算 注:操作數(shù)類型影響算術(shù)運(yùn)算的結(jié)果 6/4 6.0/4 注:C語言表達(dá)式與數(shù)學(xué)表達(dá)式的區(qū)別,算術(shù)運(yùn)算符作用于整型或浮點(diǎn)型數(shù)據(jù),完成算術(shù)運(yùn)算。(1)一、二元算術(shù)運(yùn)算符,如下表所示。,二、一元算術(shù)運(yùn)算符,如下表所示:,常用的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù) math.h,2.6.3 關(guān)系運(yùn)算符,
30、,=,=,=,!= 大于,大于等于,小于,小于等于,等于,不等于 左結(jié)合 關(guān)系運(yùn)算符運(yùn)算出的結(jié)果為0和非0 0,表示假,即該關(guān)系不成立 非0,表示真,即該關(guān)系成立 絕大多數(shù)編譯器,關(guān)系運(yùn)算得到的非0結(jié)果為1,關(guān)系運(yùn)算符關(guān)系運(yùn)算符用來比較兩個(gè)值,返回布爾類型的值true或false。關(guān)系運(yùn)符都是二元運(yùn)算符,如下表所示:,2.6.4 邏輯運(yùn)算符,邏輯運(yùn)算也稱為布爾(Boolean)運(yùn)算 /*被賦值的量放在等號(hào)左邊*/ 下面兩個(gè)語句是等價(jià)的 i = i + 2; i += 2; +、-、*、/、%、 a+=5; x*=a+3; y/=x; z%=x; printf(%d,%d,%d,%d,a,x,y
31、,z); ,2.6.6 增一和減一運(yùn)算符,n+,n-,+n,-n +讓參與運(yùn)算的變量加1,-讓參與運(yùn)算的變量減1,操作數(shù)只能是變量 作為后綴運(yùn)算符時(shí),先取n的值,然后加/減1 作為前綴運(yùn)算符時(shí),先加/減1,然后取n的值 m = n+; 等價(jià)于 m = n-; m=n; m=n; n+; n-; m = +n; 等價(jià)于 m = -n; n+; n-; m=n; m=n;,練習(xí):寫出下列程序的輸出結(jié)果,Int i=8; printf(“ %dn”, +i); printf(“ %dn”, -i); printf(“ %dn”, i +); printf(“ %dn”, i -); printf(“
32、 %dn”, -i+); printf(“ %dn”, -i-);,良好的程序設(shè)計(jì)風(fēng)格提倡:在一行語句中,一個(gè)變量只能出現(xiàn)一次加1或者減1運(yùn)算 過多的加1和減1運(yùn)算混合,不僅可讀性差,而且因?yàn)榫幾g器實(shí)現(xiàn)的方法不同,導(dǎo)致不同編譯器產(chǎn)生不同的運(yùn)行結(jié)果 Sum =(+a) + (a+); /*晦澀,可讀性差*/,2.6.6 增一和減一運(yùn)算符,/* +, -的使用例子, +, - 的優(yōu)先級(jí)大于 - */ #include stdio.h main() int i=8, x=5, y=5, p, q; printf(After i=%dt +i show %dt before i=%dn , i, +i
33、,i ); printf(After i=%dt -i show %dt before i=%dn, i, -i, i); printf(After i=%dt i+ show%dt before i=%dn, i, i+,i); printf(After i=%dt i- show %dt before i=%dn, i, i-,i); printf(After i=%dt -i+ show %dt before i=%dn, i, -i+ ,i ); printf(After i=%dt -i- show %dt before i=%dn, i, -i- ,i ); printf(n);
34、printf(After x=%dt p show %dt before x=%dn , x, p=(x+)+(x+)+(x+), x ); printf(After y=%dt q show %dt before y=%dn , y, q=(+y)+(+y)+(+y), y ); ,/* +, -的使用例子, +, - 的優(yōu)先級(jí)大于 - */ #include stdio.h main() int i=8, x=5, y=5, p, q; printf(After i=%dt +i show %dt before i=%dn , i, +i,i ); printf(After i=%dt -
35、i show %dt before i=%dn, i, -i, i); printf(After i=%dt i+ show%dt before i=%dn, i, i+,i); printf(After i=%dt i- show %dt before i=%dn, i, i-,i); printf(After i=%dt -i+ show %dt before i=%dn, i, -i+ ,i ); printf(After i=%dt -i- show %dt before i=%dn, i, -i- ,i ); printf(n); printf(After x=%dt p show
36、%dt before x=%dn , x, p=(x+)+(x+)+(x+), x ); y=5; printf(After y=%dt q show %dt before y=%dn , y, q=(+y), y ); y=5; printf(After y=%dt q show %dt before y=%dn , y, q=(+y)+(+y), y ); y=5; printf(After y=%dt q show %dt before y=%dn , y, q=(+y)+(+y)+y, y ); y=5; printf(After y=%dt q show %dt before y=%
37、dn , y, q=(+y)+(+y)+(+y), y ); ,#include stdio.h main() int a=1,b,c, k; b=(1-a)*a+; printf(a=%d,b=%dn,a,b); a=1;b=(1-a)*+a; printf(a=%d,b=%dn,a,b); a=3;k=(a+)+(a+)+(a+); printf(k=%d, a=%dn,k,a ); a=1;b=2;c=ab ,練習(xí):寫出下列程序的輸出結(jié)果,#include stdio.h main() int a=1,b,c, k; b=(1-a)*a+; printf(a=%d,b=%dn,a,b); /* a+ 計(jì)算先用a的原值計(jì)算后,再用a+1, a=2*/ a=1;b=(1-a)*+a; printf(a=%d,b=%dn,a,b); /* +a 先計(jì)算a+1, 再進(jìn)行其它計(jì)算*/ a=3;k=(a+)+(a+)+(a+); printf(k=%d, a=%dn,k,a ); /* a + a + a , 最后再a+1*/ a=1;b=2;c=ab /* (float)m/2; float (m)/2; float m
溫馨提示
- 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. 人人文庫(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 油脂公司浸出車間操作規(guī)程
- 互聯(lián)網(wǎng)公司代理記賬與風(fēng)險(xiǎn)控制合同
- 美容化妝品產(chǎn)品區(qū)域代理授權(quán)協(xié)議
- 餐廳廚師食品安全與聘用責(zé)任協(xié)議
- 個(gè)人信用貸款代理服務(wù)合同
- 財(cái)務(wù)部門員工保密與合規(guī)協(xié)議范本
- 房屋外大門修補(bǔ)方案
- 車輛抵押貸款與車輛抵押權(quán)變更協(xié)議
- 云南煤礦考試題及答案
- 輻射及危害培訓(xùn)
- (2024年)腸梗阻完整版課件
- 體位性低血壓的康復(fù)護(hù)理
- T-CARM 002-2023 康復(fù)醫(yī)院建設(shè)標(biāo)準(zhǔn)
- 新能源與人工智能的融合發(fā)展
- 人為因素航空安全管理
- 全球眼角膜炎流行病學(xué)分析
- 呼吸內(nèi)科利用品管圈PDCA循環(huán)提高患者對(duì)無創(chuàng)呼吸機(jī)的有效使用率
- 整式的乘法說課
- 《導(dǎo)游業(yè)務(wù)》第八章
- 橋梁裂縫加固處理方案
- 古文觀止1-001-鄭伯克段于鄢課件
評(píng)論
0/150
提交評(píng)論