高中信息技術(shù) 信息學奧賽C語言第一章 C語言基礎(chǔ)知識課件_第1頁
高中信息技術(shù) 信息學奧賽C語言第一章 C語言基礎(chǔ)知識課件_第2頁
高中信息技術(shù) 信息學奧賽C語言第一章 C語言基礎(chǔ)知識課件_第3頁
高中信息技術(shù) 信息學奧賽C語言第一章 C語言基礎(chǔ)知識課件_第4頁
高中信息技術(shù) 信息學奧賽C語言第一章 C語言基礎(chǔ)知識課件_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言程序設(shè)計語言程序設(shè)計第第1章章 語言基礎(chǔ)知識語言基礎(chǔ)知識第一節(jié)第一節(jié) 語言程序的結(jié)構(gòu)語言程序的結(jié)構(gòu)第二節(jié)第二節(jié) 整型數(shù)據(jù)整型數(shù)據(jù)第三節(jié)第三節(jié) 實型數(shù)據(jù)實型數(shù)據(jù)第四節(jié)第四節(jié) 算術(shù)表達式算術(shù)表達式第五節(jié)第五節(jié) 賦值表達式賦值表達式第六節(jié)第六節(jié) Turbo C的基本操作的基本操作第一節(jié)第一節(jié) 語言程序的結(jié)構(gòu)語言程序的結(jié)構(gòu)語言程序的總體結(jié)構(gòu)語言程序的總體結(jié)構(gòu) 一個完整的語言程序,是由一個一個完整的語言程序,是由一個main()函數(shù)(又稱主函數(shù))和若干個其它函數(shù)結(jié)合而成函數(shù)(又稱主函數(shù))和若干個其它函數(shù)結(jié)合而成的,或僅由一個的,或僅由一個main()函數(shù)構(gòu)成。函數(shù)構(gòu)成。案例案例1.1 僅由main

2、()函數(shù)構(gòu)成的語言程序。/*案例代碼文件名:AL1_1.C*/*功能:僅由main()函數(shù)構(gòu)成的語言程序示例*/main() printf(“This is a C program.n”); 程序運行結(jié)果:This is a C program. 案例案例1.2 計算兩個整數(shù)之和的語言程序。計算兩個整數(shù)之和的語言程序。#include “stdio.h”main() int a,b,sum; /*變量說明*/ a=10; /*把整數(shù)10賦值給變量a*/ b=20; /*把整數(shù)20賦值給變量b*/ sum = a+b; /*把兩數(shù)之和賦值給變量sum */ printf(“a=%d,b=%d,s

3、um=%dn”, a,b,sum); 程序運行情況: a=10,b=20,sum=30 函數(shù)體函數(shù)體以分號結(jié)尾,以分號結(jié)尾,叫做語句。叫做語句。編譯預(yù)處理命令編譯預(yù)處理命令main()函數(shù)函數(shù) 一個語言程序,總是從一個語言程序,總是從main()函數(shù)函數(shù)開始執(zhí)行,而不論其在程序中的位置。開始執(zhí)行,而不論其在程序中的位置。當主函數(shù)執(zhí)行完畢時,亦即程序執(zhí)行完畢。當主函數(shù)執(zhí)行完畢時,亦即程序執(zhí)行完畢。源程序書寫格式源程序書寫格式n任何一個任何一個C程序都必須包含程序都必須包含main()函數(shù)。函數(shù)。nC語言的函數(shù)體可以分為兩個部分:語言的函數(shù)體可以分為兩個部分:n定義部分和執(zhí)行部分。其中,定義部分必

4、定義部分和執(zhí)行部分。其中,定義部分必須在執(zhí)行部分的前面。須在執(zhí)行部分的前面。nC程序中用到的變量都必須先定義后使用,程序中用到的變量都必須先定義后使用,定義變量必須放在程序的定義部分。定義變量必須放在程序的定義部分。n所有語句都必須以分號所有語句都必須以分號“;”結(jié)束,函數(shù)的結(jié)束,函數(shù)的最后一個語句也不例外。最后一個語句也不例外。1.程序行的書寫格式自由,既允許程序行的書寫格式自由,既允許1行內(nèi)寫幾行內(nèi)寫幾條語句,也允許條語句,也允許1條語句分寫在幾行上。條語句分寫在幾行上。n允許使用注釋允許使用注釋。 C語言的注釋格式為: /* */(1) “/*”和“*/” 必須成對使用,且“/”和“*”

5、、以及“*”和“/”之間不能有空格,否則都出錯。(2)注釋的位置,可以單占1行,也可以跟在語句的后面。(3)如果1行寫不下,可另起1行繼續(xù)寫。(4)注釋中允許使用漢字。在非中文操作系統(tǒng)下,看到的是一串亂碼,但不影響程序運行。二、標識符在C語言中用于標識名字的有效字符序列稱為標識符標識符。標識符可以用作常量名、變量名、符號名、函數(shù)名和指針名等等。C語言的命名規(guī)則如下:(1)標識符只能由字母、數(shù)字和下劃線組成(2)標識符的第一個字符必須是字母或下滑線。C語言中字母的大小寫是有區(qū)別的。合法的標識符:a x sum spels _to file_5非法的標識符: yes? 234a yes no ye

6、s/no標識符的分類(1)關(guān)鍵字)關(guān)鍵字 關(guān)鍵字在程序中代表著固定的含義。如標識符char、float以及for、if等都已有專門的用途,它們不能用作變量名或函數(shù)名。3232個關(guān)鍵字:個關(guān)鍵字:auto break case char constcontinue default do double elseenum extern float for gotoif int long register returnshort signed sizeof static structswitch typedef unsigned union voidvolatile while(2 2)預(yù)定義標識符)

7、預(yù)定義標識符預(yù)定義標識符在預(yù)定義標識符在C語言中也有特定的含義,語言中也有特定的含義,如庫函數(shù)的名字和預(yù)編譯處理命令等。如庫函數(shù)的名字和預(yù)編譯處理命令等。C語言語法允許用戶把這類標識符另作他用,語言語法允許用戶把這類標識符另作他用,但是失去了在系統(tǒng)中規(guī)定的原意。但是失去了在系統(tǒng)中規(guī)定的原意。為了避免誤解,建議用戶不要把這些預(yù)定為了避免誤解,建議用戶不要把這些預(yù)定義標識符另作它用。義標識符另作它用。(3 3)用戶標識符)用戶標識符由用戶根據(jù)需要定義的標識符稱為由用戶根據(jù)需要定義的標識符稱為用戶標用戶標識符識符。一般用來給變量、函數(shù)、數(shù)組或文。一般用來給變量、函數(shù)、數(shù)組或文件等命名。件等命名。如果

8、用戶標識符與關(guān)鍵字相同,程序會給如果用戶標識符與關(guān)鍵字相同,程序會給出出錯信息;出出錯信息;若與預(yù)定義標識符相同,則預(yù)定義標識符若與預(yù)定義標識符相同,則預(yù)定義標識符將失去原來的含義將失去原來的含義。重點提示重點提示:標識符的命名規(guī)則:(1)C語言規(guī)定標識符只能由字母(大小寫均可,但區(qū)分大小寫)、數(shù)字和下劃線3種字符組成(2)第1個字符必須為字母或下劃線(3)已被C語言本身使用,不能用作變量名、常量名、函數(shù)名等。三、常量 在程序運行過程中,其值不能被改變的量稱為常量常量。 C語言中有4中基本常量:整型常量整型常量、實型實型常量常量、字符常量字符常量和字符串常量字符串常量。 此外,C語言中還經(jīng)常使

9、用兩種表現(xiàn)形式不同的常量:轉(zhuǎn)義字符常量轉(zhuǎn)義字符常量和符號常量符號常量。1整型常量整型常量整型常量也稱整數(shù),包括正整數(shù)、負整數(shù)和零。如:3、10、100、-5、-35等。2實型常量實型常量 實型常量即實數(shù),又稱為浮點數(shù)。如:3.1415926、-15.25等。整型常量和實型常量又稱為數(shù)值型常量數(shù)值型常量。3字符常量字符常量字符常量使用一對單引號括起來的一個字符。如a、B、?等。 以下是關(guān)于字符常量的幾點說明。(1)單引號只是作為定界符使用,并不是字符常量的組成部分。(2)單引號內(nèi)的字符不允許是單引號或反斜杠。(3)字符常量具有數(shù)值,這個值就是該字符在規(guī)定的字符集中的ASCII代碼值。P140(4

10、)字符常量在機器內(nèi)以整型常量的形式存放,因此字符常量與整型常量等價。4字符串常量字符串常量字符串常量是由一對雙引號括起來的字符序列,如“hello”、“how are you”等。 注意注意:C語言中沒有專門存放字符串的字符串變量,因此存放時需要放在一個字符型數(shù)組中。5轉(zhuǎn)義字符常量轉(zhuǎn)義字符常量 轉(zhuǎn)義字符常量是以一個“”開頭的字符序列。每個轉(zhuǎn)義字符都有其特定的含義和功能。6符號常量符號常量C語言中,允許用一個標識符來代表一個常量,即常量可以用“符號”來代替,代替常量的符號就稱為符號常量符號常量。 以下是幾點說明:(1)符號常量在使用之前必須先定義,定義方法為用宏替換“#define”使一個標識符

11、與某個常量相對應(yīng),其一般形式為: define 標識符標識符 常量表達式常量表達式。(2)一個define只能定義一個符號常量。(3)符號常量定義式的行尾沒有分號。四、變量 變量變量是指在程序運行期間其值可以發(fā)生變化的一個變量在內(nèi)存中占據(jù)一定的存儲單元,在程序中從變量中取值,實際上是通過變量名找到相應(yīng)的內(nèi)存地址,從其存儲單元中讀取數(shù)據(jù)。C語言中的任何變量,使用前都必須定義,也就是必須先定義后使用先定義后使用。第二節(jié) 整型數(shù)據(jù)一、數(shù)值轉(zhuǎn)換一、數(shù)值轉(zhuǎn)換 2 進制數(shù)碼:進制數(shù)碼:0 和和 1,后綴為后綴為B(10,11,12,13,14,15)8進制數(shù)碼:進制數(shù)碼:0,1,2,3,4,5,6,7,后

12、綴為后綴為O10進制數(shù)碼:進制數(shù)碼:0,1,2,3,4,5,6,7,8,9后綴為后綴為D16進制數(shù)碼:進制數(shù)碼: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,后綴為后綴為H 任意進制轉(zhuǎn)換到十進制任意進制轉(zhuǎn)換到十進制:任意任意R進制的一個數(shù)轉(zhuǎn)換為十進制數(shù):進制的一個數(shù)轉(zhuǎn)換為十進制數(shù):(325.76)8=382+281+580+78-1+68-2= (213.96875)10n 十進制與二、八、十六進制的轉(zhuǎn)換十進制與二、八、十六進制的轉(zhuǎn)換 (kn-1 kn-2 k0.k-1k-2k-m)R =(kn-1Rn-1+k0R0+k-1R-1+k-mR-m)10(11010.1)2=1

13、24+123+022+121+020+12-1= (26. 5)10例如:例如:2. 十進制轉(zhuǎn)換到其它進制十進制轉(zhuǎn)換到其它進制:整數(shù)部分和小數(shù)部分分別轉(zhuǎn)換整數(shù)部分和小數(shù)部分分別轉(zhuǎn)換小數(shù)部分采小數(shù)部分采 用基用基值重復(fù)值重復(fù)相乘。直相乘。直到乘積為到乘積為0。即即乘基值乘基值取取整數(shù)整數(shù)法法整數(shù)部分采用基整數(shù)部分采用基值重復(fù)值重復(fù)相除。直相除。直到商為到商為0。即即除除基值基值取取余數(shù)余數(shù)法法2 2152 107 12 53 12 26 12 13 02 6 12 3 02 1 1 0 1低位低位高位高位(215)10 =(11010111)2(0.6875)10 =?20.6875 21 .

14、3750整數(shù)整數(shù)10.37520 . 75000. 50 21 . 00 10.75 21 . 501轉(zhuǎn)換結(jié)果為:轉(zhuǎn)換結(jié)果為:(0.6875)10=(0.1011)2 2 13 2 6 1 2 3 0 2 1 1 0 1低位低位 高位高位 (13)10 =(1101)20.8775 21.7550整數(shù)整數(shù)10.755 21.51010.510 21.0201(0.8775)10(0.111)2(13.8775)10 =?2 (保留保留3位小數(shù)位小數(shù))(13.8775)10 (1101.111)2注意注意:實際上將十進制小數(shù)轉(zhuǎn)換成二進制、八進實際上將十進制小數(shù)轉(zhuǎn)換成二進制、八進制、十六進制小數(shù)過

15、程中小數(shù)部分可能始制、十六進制小數(shù)過程中小數(shù)部分可能始終不為零,因此只能限定取若干位為止。終不為零,因此只能限定取若干位為止。將十進制數(shù)轉(zhuǎn)換為八進制、十六進制數(shù)的將十進制數(shù)轉(zhuǎn)換為八進制、十六進制數(shù)的規(guī)則和方法與之相同,只是規(guī)則和方法與之相同,只是R(基數(shù))的?。ɑ鶖?shù))的取值不同。值不同。(279.6875)10 =?8 8 279 8 34 7 8 4 2 8 0 4低位低位高位高位 (279)10 =(427)80.6875 85.5000 整數(shù)整數(shù)5 0.5 8 4.04(0.6875)10=(0.54)8(279.6875)10 =(427.54)8(172.6875)10 =?16 1

16、6 172 16 10 12(C) 0 10(A)低位低位 高位高位 (172)10 =(AC)160.6875 16 41250 687511.0000整數(shù)整數(shù)11(B)(0.6875)10 =(0.B)16(172.6875)10 =(AC.B)16因為因為23=8,24=16,一位十六進制數(shù)可由四位二進制數(shù)來表示一位十六進制數(shù)可由四位二進制數(shù)來表示一位八進制數(shù)可由三位二進制數(shù)來表示。一位八進制數(shù)可由三位二進制數(shù)來表示。作反向轉(zhuǎn)換:作反向轉(zhuǎn)換:三位二進制數(shù)可用一位八進制數(shù)表示三位二進制數(shù)可用一位八進制數(shù)表示四位二進制數(shù)可用一位十六進制數(shù)來表示四位二進制數(shù)可用一位十六進制數(shù)來表示n 二進制與

17、其他進制數(shù)的轉(zhuǎn)二進制與其他進制數(shù)的轉(zhuǎn)換換 最后一組最后一組不足用不足用0補!補!將二進制整數(shù)將二進制整數(shù)從右向左從右向左每隔每隔3位位/4位分位分為一組為一組1.1.二進制到八二進制到八/ /十六進制十六進制將每組按二進將每組按二進制數(shù)向十進制制數(shù)向十進制數(shù)轉(zhuǎn)換的方法數(shù)轉(zhuǎn)換的方法進行轉(zhuǎn)換進行轉(zhuǎn)換整數(shù)整數(shù)將二進制小數(shù)將二進制小數(shù)從左向右從左向右每隔每隔3位位/4位分位分為一組為一組將每組按二進將每組按二進制數(shù)向十進制制數(shù)向十進制數(shù)轉(zhuǎn)換的方法數(shù)轉(zhuǎn)換的方法進行轉(zhuǎn)換進行轉(zhuǎn)換小數(shù)小數(shù)010 110 101010 110 101 2 6 5 2 6 50. 101 1000. 101 1000. 5 40

18、. 5 4最后一組最后一組不足用不足用0補!補! 1011 0101 1011 0101 B 5 B 50.1011 10000.1011 10000. B 80. B 8最后一組最后一組不足用不足用0補!補!2. 2. 八八/ /十六進制到二進制十六進制到二進制:0.1011 01110.1011 01110. B 70. B 7例:例:(0.B7)16 = (?)2 0. 101 1000. 101 1000. 5 40. 5 4例:例:(0.54)8= (?)2 3. 十六進制與八進制的轉(zhuǎn)換十六進制與八進制的轉(zhuǎn)換十六/八進制的轉(zhuǎn)換可以按以下規(guī)則進行:十六進制十六進制二進制二進制八進制八進

19、制(EA.15)16 =(1110 1010 . 0001 0101)2 =(11101010 . 00010101)2 =(011 101 010.000 101 010)2 =(352.052)8二、八、十六進制對照表二進制數(shù)八進制數(shù)00000011010201131004101511061117二進制數(shù)十六進制數(shù)二進制數(shù)十六進制數(shù)00000100080001110019001021010A001131011B010041100C010151101D011061110E011171111F表表1.1 二、八進制數(shù)字對照表二、八進制數(shù)字對照表表表1.2 二、十六進制數(shù)字對照表二、十六進制數(shù)字

20、對照表二、整型常量二、整型常量1整型常量的表示形式C語言中整型常量有如下三種表示形式:(1)十進制)十進制。用一串連續(xù)的數(shù)字來表示,如32768,768,0等。(2)八進制。)八進制。用數(shù)字0開頭,各位用07這8個數(shù)之一表示,如010,011等。在C程序中不能在一個十進制整數(shù)前面加前導(dǎo)零。(3)十六進制。)十六進制。用0 x或0X開頭,各位用09以及AF(或af)這16個數(shù)之一表示,如0 x24B,0X34a等。三、三、 整型變量整型變量整型變量是用于存儲整型值的變量。整型變量可分為基本型、短整型、長整型和無符號型四種?;拘偷恼妥兞坑妙愋兔P(guān)鍵字int進行定義,如 int a; 或 int

21、 a, b, c;基本型整型變量在一般微機中占用2個字節(jié)的存儲單元,該變量中允許存放的數(shù)值范圍是:3276832767。在程序中定義變量時,編譯程序會為相應(yīng)的變量開辟內(nèi)存單元,但并沒有在該單元中存放任何初值,這時變量中的值是無意義的,即稱為變量值“無定義”。C語言規(guī)定,可以在定義變量的同時給變量賦初值,即變量的初始化。 如:main() int a=1, b=4, i=8; 整型分配的內(nèi)存空間00000000 00000110整數(shù)6在內(nèi)存中的形式整型數(shù)據(jù)的分類整型數(shù)據(jù)的分類整型常量與變量有短整型(short int)、基本整型(int)、長整型(long int)和無符號型(unsigned)

22、,以及有符號型的區(qū)分。在表示一個長整型常量時,應(yīng)該在其后面加一字母后綴L(或l),如123L,345l等。無論是短整型常量還是長整型常量,C語言系統(tǒng)都默認為是有符號整數(shù)。無符號整數(shù)在數(shù)字的后面加上一個字母后綴u或者是U。若是長整型無符號整型常量,則應(yīng)該加后綴lu或者是LU。 例1.8 p9四、整數(shù)在內(nèi)存中的存儲形式計算機中最小的存儲單位是“位(bite)”,8個二進制位組成一個“字節(jié)(byte)”,若干個字節(jié)組成一個“字(word)”。C語言中,一個int整數(shù)通常用兩個字節(jié)存放,其中最高位(最左邊一位)用來存放整數(shù)的符號,正整數(shù)時最高位為0,負整數(shù)時最高位為1。1正整數(shù)正整數(shù) C語言中,正整數(shù)

23、以原碼形式存放。如整數(shù)5在內(nèi)存中的二進制碼為:0000000000000101。 最大有符號正整數(shù)是0111111111111111,它對應(yīng)的十進制整數(shù)是215-1=327767。2負整數(shù)負整數(shù) C語言中,負整數(shù)在內(nèi)存中是以整數(shù)的“補碼”形式存放。 求某個二進制碼的補碼,步驟如下:(1)求原碼的反碼,即將01,10(2)將所得的反碼加1,即得原碼的補碼。例如例如:求-6在內(nèi)存中存放的形式,步驟如下: (1)6的原碼:0000000000000110 (2)6的反碼:1111111111111001 (3)-6的補碼:1111111111111010反過來,如何利用補碼來計算對應(yīng)的負整數(shù)?例如,

24、在內(nèi)存中某一補碼1111111111111101轉(zhuǎn)換步驟:(1)將補碼的各位取反,得到0000000000000010(2)將得到的結(jié)果加上1,得0000000000000011(3)把該二進制轉(zhuǎn)換為十進制得數(shù)為:3.(4)因為補碼的最高位為1,表示為負數(shù)。因此,所得的數(shù)為-3。3無符號正整數(shù)無符號正整數(shù)無符號整數(shù)的最高位不再用來存放整型的符號,因此無符號數(shù)不可能是負數(shù)。對于無符號整數(shù),最高位(最左邊一位)不再用來存儲整數(shù)的符號,全部用來存放整數(shù)。 例如,11111111 11111111重點提示:重點提示: 在C語言中,對于有符號整數(shù),用最高位(最左邊一位)用來存儲整數(shù)的符號,若是正整數(shù),最

25、高位為0,若是負數(shù),最高位放置1。對于正整數(shù)用“原碼”形式存放,對于負整數(shù)用“補碼”形式存放。第三節(jié) 實型數(shù)據(jù)一、實型常量一、實型常量在C語言中可以有兩種表示形式:小數(shù)形式和整數(shù)形式。 (1)小數(shù)形式)小數(shù)形式。由整數(shù)部分、小數(shù)點和小數(shù)部分組成。小數(shù)點的前面或后面可以沒有數(shù)字,但是不能同時沒有數(shù)字。 如,3.14159、.36、0.0、12.、0.158(2)指數(shù)形式。)指數(shù)形式。由尾數(shù)部分、字母E或e和指數(shù)部分組成,其格式如下:尾數(shù)部分尾數(shù)部分E(或(或e)指數(shù)部分指數(shù)部分 指數(shù)部分只能是整數(shù),且三個組成部分均指數(shù)部分只能是整數(shù),且三個組成部分均不能省略不能省略。 如, 合法:12.34E+

26、9, 5.453e10 非法:e2、.6E3.5、.e2、e、E 注意注意,在字母E(或e)的前后以及數(shù)字之間不得插入空格。二、二、 實型變量實型變量 實型變量分為兩種類型:(1)單精度型(float),分配4個字節(jié)的存儲單元,數(shù)值范圍約為10381038,并提供7位有效位;小于1038的數(shù)被處理成零值。(2)雙精度型(double),分配8個字節(jié)的存儲單元,數(shù)值范圍約為1030810308,并提供1516位的有效位;小于10308的數(shù)被處理成零值。在計算機內(nèi)存中,實數(shù)一律是以指數(shù)形式在計算機內(nèi)存中,實數(shù)一律是以指數(shù)形式存放的,而不是小數(shù)的形式。存放的,而不是小數(shù)的形式。例如:例如: floa

27、t a; double b; a=123456.789e5 ; b=123456.789 ; 第四節(jié) 算術(shù)表達式C語言中基本的運算符是: +、-、*、/、%。這些運算符需要兩個運算對象,稱為雙目運算符。除求余運算符外,運算對象可以是整型也可以是實型。說明:(1)乘號“*”不能省略,也不能寫成代數(shù)式中的“”或“”(2)算術(shù)運算符兩邊的運算對象類型必須保持一致才能運算。(3)若雙目運算符兩邊的類型不一致,則系統(tǒng)將自動按照類型轉(zhuǎn)換規(guī)則使兩邊類型一致后再進行運算。(4)求余運算符“%”要求參與運算的量必須為整數(shù),且求余的結(jié)果符號與被除數(shù)相同。如14-3的結(jié)果為2,-21%4的結(jié)果為-1。(5)在C語言

28、中,所有實型數(shù)的運算均以雙精度方式進行。若是單精度數(shù),則在尾數(shù)部分補0,使之轉(zhuǎn)化為雙精度數(shù)。一、運算符的優(yōu)先級、結(jié)合性和算術(shù)表達式一、運算符的優(yōu)先級、結(jié)合性和算術(shù)表達式 在C語言中,常量、變量、函數(shù)調(diào)用以及按C語言語法規(guī)則用運算符把運算數(shù)連起來的式子都是合法的表達式。1算術(shù)運算符和圓括號的優(yōu)先級次序如下: (由高低)( )、 、* 、/ 、% 、 、 2算術(shù)運算符和圓括號的結(jié)合性以上所列的運算符,只有單目運算符“”和“”的結(jié)合性是從右到左,其余運算符的結(jié)合性都是從左到右。3算術(shù)表達式用算術(shù)運算符和括號將運算對象連接起來的、符合C語法規(guī)則的式子,稱C算術(shù)表達算術(shù)表達式式。運算對象運算對象可以是常

29、量、變量、函數(shù)等。關(guān)于算術(shù)表達式的幾點說明關(guān)于算術(shù)表達式的幾點說明:(1)在表達式中可以使用多層圓括號,但左右括號必須配對。運算時從內(nèi)層開始,由內(nèi)向外依次計算表達式的值。(2)在求解表達式的值時,若包含不同優(yōu)先級的運算符,則按運算符的優(yōu)先級別由高到低運行,若表達式中運算符的級別相同,則按運算符的結(jié)合方向進行。 如表達式a+b-c,因為加號和減號的優(yōu)先級相同,它們的結(jié)合性為從左到右,因此先計算a+b,然后把所得的結(jié)果減去c。二、強制類型轉(zhuǎn)換表達式二、強制類型轉(zhuǎn)換表達式強制類型轉(zhuǎn)換表達式的形式: (類型名)(表達式)(類型名)(表達式)其中(類型名)稱為強制類型轉(zhuǎn)換運算符。 例如: (float)

30、(x) 將x轉(zhuǎn)換成浮點型 (double)(8%3)將8%3轉(zhuǎn)換成雙精度型重點提示重點提示:在求解表達式的值時,若包含不同優(yōu)先級的運算符,則按運算符的優(yōu)先級別由高到低運行,若表達式中運算符的級別相同,則按運算符的結(jié)合方向進行。第五節(jié) 賦值表達式一、賦值運算符和賦值表達式一、賦值運算符和賦值表達式1賦值運算符賦值運算符賦值符號“”稱為賦值運算符,由賦值運算符組成的表達式為賦值表達式。 格式如下: 變量名=表達式; 其作用是將一個表達式的值賦給另一個變量。 例如:a5的作用是把5賦給變量a,即把5存入變量a對應(yīng)的存儲單元。 關(guān)于簡單的賦值運算,要注意以下幾點:(1)賦值符“”左邊必須是變量,右邊既

31、可以是常量,變量,也可以是函數(shù)調(diào)用或表達式。如 z=sqrt(3)+2*c。(2)賦值表達式右邊的“表達式”,也可以是一個賦值表達式,即出現(xiàn)多個賦值符號的情況。例如:a=(b=3),它相當于b=3。(3)賦值運算符的作用是將賦值運算符右邊的值賦值給左邊的變量,運算后左邊變量的值被右邊表達式的值代替,而右邊的值不會發(fā)生變化。(4)賦值符“”與數(shù)學中的等號“”外觀相同,但含義、作用不同,如i=i+1,在數(shù)學中是不成立的,但在C語言中是正確的。它的含義是將i當前值加1再賦給變量i。(5)如果賦值號兩邊的運算對象類型不一致,則系統(tǒng)會自動進行類型轉(zhuǎn)換。 轉(zhuǎn)換的規(guī)則是轉(zhuǎn)換的規(guī)則是:將賦值號右邊表達式的值的

32、類型轉(zhuǎn)換成賦值號左邊變量的類型。二、復(fù)合的賦值表達式1復(fù)合的賦值運算符復(fù)合的賦值運算符在賦值符“”之前加上其他運算符,可以構(gòu)成復(fù)合的賦值運算符。 例如 +=: x+=4 它相當于表達式:x=x+4 即先使x加4,再賦給x。采用這種復(fù)合運算符,一是為了簡化程序,二是為了提高編譯效率。C語言規(guī)定可以使用以下10種復(fù)合賦值運算符,如下: +=、 =、 *=、 %=、 =、 &=、 =、 =、 |=其中后五種是有關(guān)位運算方面的,將在后續(xù)章節(jié)中介紹。注意注意:復(fù)合賦值運算符的優(yōu)先級與賦值運算符的優(yōu)先級相同。例如1.14:如已有變量n,值為8,計算表達式n+=n*=n-2的值。 因為賦值運算符與復(fù)

33、合的賦值運算符的優(yōu)因為賦值運算符與復(fù)合的賦值運算符的優(yōu)先級相同,且運算方向自右向左先級相同,且運算方向自右向左. 計算步驟為:(1)先計算n-2,該表達式值為6。(2)再計算n*=6,即n=n*6,此時n的值仍為8,所以表達式值為48。(3)最后計算n+=48,即n=n+48,此時n的值已經(jīng)改變?yōu)?8,所以表達式的值為96。即表達式n+=n*=n-2最終的值為96,而n最終的值也是96。2. 賦值運算中的類型轉(zhuǎn)換賦值運算中的類型轉(zhuǎn)換如果賦值運算符兩側(cè)的類型不同,在賦值時系統(tǒng)要自動進行類型轉(zhuǎn)換,轉(zhuǎn)換原則是不論賦值號兩側(cè)類型級別高低如何,一律將賦值號右邊的類型轉(zhuǎn)換成左邊變量的類型,然后再賦值,具體

34、規(guī)定如下:1將實數(shù)賦給整型變量時,舍棄實數(shù)的小數(shù)部分(不是四舍五入)。例如i是整型變量,則i2.99;結(jié)果i的值為2,在內(nèi)存中以整數(shù)形式存儲。2將整數(shù)賦給單、雙精度變量時,數(shù)值不變,但將整數(shù)轉(zhuǎn)換成浮點數(shù)形式存放到左邊的變量中。例如:float x,x2,結(jié)果是將2轉(zhuǎn)換成2.000000賦給變量x。3將字符型賦給整型時,由于字符型為1個字節(jié),而整型是2個字節(jié),故將字符的ASCII碼值放到整型量的低8位中,高8位為0。4將整型賦給字符型時,只把低8位賦給字符量。重點提示重點提示:賦值運算符的左邊只能是變量,不能是常量或表達式。計算表達式的值時,參加運算的各個數(shù)據(jù)類型都轉(zhuǎn)換成數(shù)據(jù)長度最長的數(shù)據(jù)類型,

35、然后再計算,計算的結(jié)果是數(shù)據(jù)長度最長的數(shù)據(jù)類型。三、自加、自減運算符自增運算符(+)是使運算量增加1,自減運算符(-)是使運算量減1,它們有以下幾種形式:+a a值先增加1后再參與其他運算 a+ 先參與其他運算再使a值增加1 -a a值先減少1后再參與其他運算 a- 先參與其他運算再使a值減少1前綴增量運算符前綴增量運算符后綴增量運算符后綴增量運算符關(guān)于自增和自減運算,要注意以下幾點:(1)+a和a+的區(qū)別。(2)增量運算符的運算對象只能為變量,不能是常量或是表達式。例如,+3、+(i+1)等非法。(3)不論+(或-)在變量的前面還是后面,對于變量本身增加1(或減少1)都具有相同的效果。(4)但自增、自減運算符和其他運算符混合使用時,應(yīng)注意其結(jié)合性為“自右向左”,如-a+,即相當于-(a+)。a+作為一個表達式,該表達作為一個表達式,該表達式的值為變量式的值為變量a沒有增加沒有增加1之前之前的值,而的值,而+a的值為變量的值為變量a增加增加1之后的值。之后的值。注意區(qū)別:注意區(qū)別:j=i+; j=+i;四、逗號運算符和逗號表達式四、逗號運算符和逗號表達式“,”是C語言提供的一種特殊運算符,用逗號將表達式連接起來的式子稱為逗號表逗號表達式達式。 其一般形式為: 表達式1,表達式2,表達式n 例如: x=5,y=6,z=7說明:說明:1逗號運算符的結(jié)合性為從左到右,先計算表達式

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論