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

下載本文檔

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

文檔簡介

第2講

數(shù)據(jù)類型、運算符和表達式1計算機中的信息計算機中的信息雖然種類繁多,形式多樣。但是在處理時都可以表達為數(shù)據(jù)的形式。這里的數(shù)據(jù)不僅包括我們熟知的數(shù)學(xué)運算中的數(shù)據(jù),還包括聲音、圖像等復(fù)雜信息。數(shù)據(jù)在計算機中進行處理時,首先必須解決的問題是數(shù)據(jù)在存儲器里的存儲問題:由于計算機的內(nèi)存大小有限,怎樣存儲更加節(jié)約存儲空間?怎樣存儲便于數(shù)據(jù)的管理,例如查找、排序、統(tǒng)計等。結(jié)論:計算機中的數(shù)據(jù)按照類型進行存儲引出“數(shù)據(jù)類型”的概念2引例假設(shè)要記錄一個人的詳細資料。具體內(nèi)容如下:姓名:michal性別:男年齡:30工資:2004.86工作單位:人民郵電出版社發(fā)行部3假如現(xiàn)在分別用不同的數(shù)據(jù)來表示上述個人資料中的基本信息。姓名:字符類型數(shù)據(jù)性別:只有“男”和“女”兩種選擇年齡:都為整數(shù),而且一般不會超過100工資:實數(shù)工作單位:內(nèi)容豐富結(jié)論:不同的數(shù)據(jù)信息在表達時具有不同的特點4劃分數(shù)據(jù)類型的必要性劃分數(shù)據(jù)類型的意義:劃分數(shù)據(jù)類型有利于數(shù)據(jù)的管理劃分數(shù)據(jù)類型有利于有效利用計算機有限的內(nèi)存空間在C程序中:每一個數(shù)據(jù)都被賦予一個確定的數(shù)據(jù)類型。不同的數(shù)據(jù)類型的數(shù)據(jù)在存儲時占有不同長度的內(nèi)存空間。注意:C程序中的每一個數(shù)據(jù)都必須有一個確定的數(shù)據(jù)類型。5基本數(shù)據(jù)類型數(shù)據(jù)類型的分類基本數(shù)據(jù)類型復(fù)雜數(shù)據(jù)類型幾種常用的基本數(shù)據(jù)類型:char,字符型:占有一個字節(jié)的長度,主要用來描述符號類型的數(shù)據(jù)。int,整型數(shù):占有4個字節(jié)的長度,一般用來描述整數(shù)類型的數(shù)據(jù)float,單精度浮點型實數(shù):占有4個字節(jié)的長度,一般用來表示帶有小數(shù)的實數(shù)。double,雙精度浮點型實數(shù):占有8個字節(jié)的長度,一般用來表示精度較高的實數(shù)6總結(jié)回到前例,下面分析幾種數(shù)據(jù)在表達上的特點:姓名:工作單位:可以使用字符型數(shù)據(jù)char來表示年齡:可以使用整型數(shù)據(jù)int來表示工資:可以使用單精度實數(shù)float來表示。在C語言程序中,每一個數(shù)據(jù)都應(yīng)該具有特定的類型。7常量常量的概念常量就是在程序運行過程中其數(shù)值不會發(fā)生改變的量。符號常量的使用定義:#define常量名稱常量值例如:#definePI3.14159用途:便于程序的調(diào)試#defineA5…………..A………..A………………….A…….……………..A….A………..8提示:一般來說,在C程序中符號常量通常使用大寫字母表示,以便區(qū)別于變量。特殊的字符常量:轉(zhuǎn)義字符\n:回車換行\(zhòng)a:警鈴聲\t:水平制表

\V:豎直制表\\:反斜杠“\”\‘:單引號“’”9變量變量的概念在程序中其值可以發(fā)生改變的量。注意:一個變量在某一時刻只有一個確定的數(shù)值,一個變量在獲得新值時原值將不復(fù)存在。變量的定義格式:數(shù)據(jù)類型變量名(=初始值)例如:inti=5對變量名的要求變量名主要由英文字母和數(shù)字構(gòu)成。C程序中的變量名區(qū)分大小寫變量名中不允許包含“;”、“?!?、“+”、“-”以及“:”等符號。但可以使用下劃線“_”。實際應(yīng)用中,建議盡量使用具有實際意義的英文單詞作為變量名,盡量做到“見名知義”不要使用系統(tǒng)關(guān)鍵字作為變量名10定義變量的實質(zhì)變量的操作讀(?。懀ù妫┒x一種數(shù)據(jù)類型的變量的實質(zhì),就是在內(nèi)存中為該變量分配一定大小的存儲空間。此時變量名作為該存儲空間的標識。當程序?qū)υ撟兞窟M行運算時,都要訪問該變量對應(yīng)的存儲空間以進行數(shù)據(jù)讀寫任何變量在使用前必須定義。在程序中使用未經(jīng)定義的變量是不合法的11變量的值任何變量必須具有確定的數(shù)值才能參加運算和操作。否則將會引發(fā)潛在的錯誤??梢栽谧兞慷x的同時為其賦初值:

intage=10;也可以在定義變量后再為其賦初值

intage;

age=10;/*此處的“=”為賦值運算符還可以同時定義多個變量并為其賦初值:

Inta=6,b=3,c=7;12整型變量數(shù)據(jù)在內(nèi)存中的存放形式二進制補碼整型變量分類基本整型int4字節(jié)短整型shortint2字節(jié)長整型longint4字節(jié)有符號[signed]int

無符號unsignedint3.整型變量的定義13實型變量實型變量的存放形式實型變量的分類

floatdoublelongdouble實型變量的定義14字符型變量字符變量用來存放字符型數(shù)據(jù)。但是在一個字符變量中只能存放一個字符。字符變量的賦值

charletter=‘a(chǎn)’/*注意加單引號*/字符變量的存儲字符變量在存儲時,在其相對應(yīng)的存儲單元中并非存儲字符本身,而是將其對應(yīng)的ASCII代碼(一個整數(shù)值)保存在內(nèi)存空間中。字符串使用雙引號包括起來的字符序列:“CProgram”15數(shù)據(jù)的表示Bit(位):一個bit存儲一個二進制位(0或1)字節(jié):8個bit作為一個字節(jié),是計算機中為數(shù)據(jù)分配內(nèi)存空間的單位。例如:char數(shù)據(jù)類型數(shù)據(jù):1字節(jié);int類型數(shù)據(jù):4字節(jié)一個數(shù)據(jù)被分配的存儲空間越大,能容納的信息量越大,越容易表達更加復(fù)雜的信息。數(shù)據(jù)在內(nèi)存中都以二進制的形式表示10011011高位低位16運算符和表達式運算:對數(shù)據(jù)進行加工處理的過程。運算量:參與運算的數(shù)據(jù)。運算符:記錄不同種類運算的符號。表達式:用運算符把運算量連接起來的式子。運算的類型單目運算:單個運算量參與的運算。雙目運算:兩個運算量參與的運算。三目運算:三個運算量參與的運算。在C語言中只有一個三目運算。17C語言中的運算符C語言具有豐富的運算符C語言中的運算符被分為不同的類型任何表達式都有一個確定的值算術(shù)運算符:用于實現(xiàn)簡單的數(shù)學(xué)運算,一般為雙目運算:+(加)、—(減)、*(乘)/:除法(整除)2/4=0;7/3=2;7/3.0=2.3%:取余運算:2%4=2;7%3=1算術(shù)表達式:(a+8*6.5/6)%b18關(guān)系運算符關(guān)系運算符用來比較兩個數(shù)據(jù)的大小,為雙目運算。關(guān)系運算可以歸納為“大于(或等于)”、“小于(或等于)”關(guān)系運算的結(jié)果是關(guān)系成立(結(jié)果為真)或不成立(結(jié)果為假)關(guān)系運算符:<,>,>=,<=,特別注意:==:判斷相等?。剑号袛嗖坏龋剑嘿x值運算符19關(guān)系表達式已知:inta=2;doublef=3.0;charc=‘a(chǎn)’(f/3)>(a-c)1.0-95成立,結(jié)果為1(a+2)!=(c-93)44不成立,結(jié)果為0(c%a)>(a/2)11不成立,結(jié)果為0關(guān)系表達式的結(jié)果不是1(真)就是0(假):當關(guān)系表達式所表示的關(guān)系成立時,其結(jié)果為1;當關(guān)系表達式所表示的關(guān)系不成立時,其結(jié)果為020邏輯運算符邏輯運算符用來對關(guān)系式或邏輯量進行邏輯運算。邏輯運算的結(jié)果也僅有兩種:真(1)和假(0)在C語言中使用整數(shù)0來表示邏輯假,同時,使用非零值(只要不是0的正數(shù)和負數(shù))來代表邏輯真21“與”邏輯運算符&&是一種雙目運算將“與”邏輯運算符&&插入兩個運算量之間組成邏輯表達式。組成表達式的運算量可以是算術(shù)表達式、關(guān)系表達式以及邏輯表達式對一個與邏輯表達式(&&)求值時,只有組成表達式的所有運算量的值為真(1),其結(jié)果才為真,只要這些運算量中有一個的值為假,其值即為假(0)22已知inta=2;doublef=3.0;charc=‘a(chǎn)’(c>a)&&(f>4)(1,0,其值為假)(c>a)&&(f<4)(1,1,其值為真)在邏輯表達式中,若連續(xù)出現(xiàn)多個“與”運算,則從左至右依次計算每個表達式的值。只要計算出某一個表達式的值為假,則全式的結(jié)果為假,就不再對后面的表達式進行計算-----短路運算符例:intn=1,d=0;d!=0&&n*d<0(不必計算n*d<0)23或邏輯運算符(||)對一個或邏輯表達式(||)求值時,只要組成表達式的運算量中有一個的值為真(1),其結(jié)果即為真,只有這些運算量中所有值為假時,其值即為假(0)。已知inta=2;doublef=3.0;charc=‘a(chǎn)’(c>a)||(f>4)(1,0,其值為真)(c<a)||(f>4)(0,0,其值為假)24邏輯非運算(?。﹩文窟\算表示對一個表達式的值取反的運算。如果一個表達式的值為真,對其進行邏輯非運算后,其值為假;如果一個表達式的值為假,對其進行邏輯非運算后,其值為真??梢詫θ我鈹?shù)據(jù)類型的表達式進行邏輯非運算。已知inta=2;doublef=3.0;charc=‘a(chǎn)’(c>a)其值為真!(c>a)其值為假25賦值運算將一個數(shù)值或一個表達式的值送給一個變量的操作稱為賦值例如:(inta;)a=6;a=a+6;a=a+(b*2+1)注意:表達式中的“=”不在是數(shù)學(xué)上的等號。這里體現(xiàn)了一種“迭代”的運算。26C語言中的賦值運算由于賦值表達式與傳統(tǒng)的數(shù)學(xué)等式相悖,容易造成誤解賦值號左端的變量還要在右端重寫一次,顯得過于繁瑣x=x+6x+=6x=x*6x*=6x=x-6x-=6x=x/6x/=6x=x%6x%=627特別地:

x=x+1x++賦值運算是雙目運算,其左值必須是單個變量(有確定的內(nèi)存空間);其右值可以是表達式、常量以及已經(jīng)賦值的變量。一個變量在進行賦值運算后,獲得新的數(shù)值的同時,原來的值將不復(fù)存在。28多重賦值語句由多個賦值運算符組成的語句例:Intx=2,y,z;x+=y=z=6按照“從右至左”的結(jié)合順序進行計算,依次完成賦值操作z=6賦值后z變量的值為6y=z將變量z的值賦給變量y,y的值也為6x+=yx=x+yx最終值為829自增自減運算自增運算++:a++:a=a+1自減運算--:a--:a=a-1自增運算包括前置運算和后置運算,二者在參與運算時具有較大區(qū)別運算符放在變量的前面:++a;--a變量先自增或自減,然后使用變量自增或自減后的值參加其他運算前置運算30后置運算運算符放在變量的前面:a++;a--變量先以原來的值參與其他運算,然后再自增或自減。例:intm=12,n=5,k=16,x;x=n++;(n的原值5送給x,然后自增為6x=++n;(n自增為7,然后將其值賦給xx=(++k)-(--m)(k先自增為17,m自減為

11,然后將運算結(jié)果6賦給xx=k++-m--(k和m以原值進行減法運算,將結(jié)果6賦給X,然后k自增,m自減31三目運算格式:包含3個運算量表達式1?表達式2:表達式3;算法:首先計算表達式1的值,若其值為真(非零值),則計算表達式2的值作為整個表達式的值;若其值為假(0),則計算表達式3的值作為整個表達式的值;例:intx=4,y=6,z;

z=x>y?x:y

因為x(4)<y(6),因此將y的值賦給z(6)32運算符的優(yōu)先級在計算含有多個不同運算符的表達式時,必須考慮哪個運算符優(yōu)先計算的問題。這是通過為不同類型的運算符設(shè)置不同的優(yōu)先級來實現(xiàn)的。不同優(yōu)先級的運算符具有不同的運算順序,類似于我們熟知的“先乘除、后加減”33常用運算符的優(yōu)先級一般來說,單目運算的優(yōu)先級最高:++、--、!、+(取正數(shù))、-(取負數(shù))*,/,%+,-<,<=,>,>===,!=&&||三目運算:?:賦值運算:=,+=等等最低34優(yōu)先級總結(jié):單目高于雙目,雙目高于三目,三目高于賦值在雙目中:算術(shù)運算高于關(guān)系運算,關(guān)系運算高于邏輯運算在以后的學(xué)習(xí)過程中,我們還會不斷學(xué)習(xí)到更多新的運算符,仍然可以根據(jù)上述方法來確定優(yōu)先級。Intx=4,y=25,z=2;z=(--y/++x)*z--結(jié)果:735運算符的結(jié)合規(guī)則在一個1表達式中,如果同一級別的運算符出現(xiàn)在一個表達式的相鄰位置,這時必須考慮結(jié)合規(guī)則。例如a+b-c,到底是(a+b)-c還是a+(b-c)大多數(shù)運算符的結(jié)合規(guī)則都是從左到右,只有兩類運算符是從右到左:單目運算:!

溫馨提示

  • 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

提交評論