課程-13級語言c03數(shù)據(jù)類型_第1頁
課程-13級語言c03數(shù)據(jù)類型_第2頁
課程-13級語言c03數(shù)據(jù)類型_第3頁
課程-13級語言c03數(shù)據(jù)類型_第4頁
課程-13級語言c03數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第三章數(shù)據(jù)類型、運算符和表達(dá)式1.數(shù)據(jù)類型2.常量和變量3.基本數(shù)據(jù)類型:整型、實型、字符型4.最常用的運算符和表達(dá)式:算術(shù)運算符和算術(shù)表達(dá)式、賦值運算符和賦值表達(dá)式主要內(nèi)容引入假設(shè)有如下數(shù)據(jù)需要處理:1024、65536、123.5、123.456789e10、‘a(chǎn)’、“name”,如何在計算機中表示這些數(shù)據(jù)?設(shè)計算法前,需要先定義數(shù)據(jù)結(jié)構(gòu):編程時,函數(shù)的說明部分就是對數(shù)據(jù)結(jié)構(gòu)的描述,可執(zhí)行部分是對算法的具體描述。在C語言中如何描述數(shù)據(jù)結(jié)構(gòu)呢?——數(shù)據(jù)類型算法是對數(shù)據(jù)處理過程的描述,數(shù)據(jù)處理過程許多基本操作是如何實現(xiàn)的呢?——運算符和表達(dá)式2.1C語言數(shù)據(jù)類型2.1.1C語言數(shù)據(jù)類型

整型字符型

單精度型

實型(浮點型)

枚舉類型雙精度型數(shù)據(jù)類型

數(shù)組

構(gòu)造類型結(jié)構(gòu)體類型共用體類型指針類型空類型基本類型2.2常量與變量2.2.1常量1.定義:在程序執(zhí)行期間,其值不可改變的量稱為常量2.類型:數(shù)值常量例如:10,3,2.68,‘a(chǎn)’等符號常量即用一個符號代表一個常量例如:#definePI3.1415926main(){floatr,l,s;

r=2;l=2*PI*r;s=PI*r*r;

printf(“l(fā)=%d,s=%d”,l,s);}說明:符號常量必須先定義后才能用它表示一個數(shù)值。符號常量的值在其作用域內(nèi)不能改變,也不能再被賦值。符號常量名習(xí)慣用大寫字母表示。2.2.2變量1.定義:程序執(zhí)行期間值可以改變的量。2.命名規(guī)則:

變量名由標(biāo)識符表示,只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。

例如:下列標(biāo)識符中,哪些變量名不合法:

M.D.John12%gf1add_ce36age&5thclasslotus-1-2-3cd*ef3.說明:*變量要“先定義,后使用”定義格式:類型說明符標(biāo)識符1,…,標(biāo)識符n

例如:intx,y,z;floata,b,c,d;*選變量名時,要做到“見名知意”例如:namest_ageclasssum*大小寫字母是兩個不同的字符,C變量名習(xí)慣用小寫字母表示。*變量的長度沒有統(tǒng)一規(guī)定,但各系統(tǒng)都有自己的規(guī)定,建議8位。(IBMPC的MSC8位,TC32位)2.3整型數(shù)據(jù)3.3.1整型常量*十進(jìn)制整數(shù):由數(shù)字(0-9)和正負(fù)號表示

例如:123、-456、0等*八進(jìn)制整數(shù):以0開頭數(shù)是八進(jìn)制數(shù)

例如:

0123即(123)8

=(83)

10

(123)

8=182+281+380=(83)

10*十六進(jìn)制整數(shù):以0x或0X開頭

例如:0x123即(123)

16=(291)

10

-0x12即(-12)

16=(-18)

10

0x2F即(2F)

16=(47)

102.3.2整型變量

基本型:以int

表示短整型:以shortint

或short

表示

1.類型長整型:以longint

或long

表示無符號基本型(unsignedint)

無符號型無符號短整型(unsignedshort)

無符號長整型(unsignedlong)說明:一個無符號整型變量中可以存放的數(shù)的范圍擴大一倍。整型變量一般在內(nèi)存中占2個字節(jié)(16位).2.在內(nèi)存中是以補碼的形式存放的。補碼:正數(shù):相同負(fù)數(shù):取反再加1舉例Main(){inta,b,c,d; unsignedu; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%d\n”,c,d); }結(jié)果:a+u=22,b+u=-14整型數(shù)據(jù)的溢出在TurboC中,最大允許值:32767(-32768-32767)。編程實現(xiàn)32767+12.4實型數(shù)據(jù)2.4.1實型常量表示形式有如下兩種:

十進(jìn)制數(shù)形式:由數(shù)字和小數(shù)點及正負(fù)號組成。(注意:必須有小數(shù)點)

例如:23.678.67823.

指數(shù)形式:由數(shù)字、小數(shù)點、字母e或E及正負(fù)號組成。(注:e或E之前必須有數(shù)字,且后指數(shù)必須為整數(shù))例如:3.5E-52e3E23.6e3.5.e6e

正確!??!錯誤!??!2.4.2實型變量實型變量可分為:

單精度(float型)如:floatx,y;

雙精度型(double型)如:doublea,b,c;說明:1.float型變量在內(nèi)存中占4個字節(jié);double型變量在內(nèi)存中占8個字節(jié)。2.單精度實數(shù)提供7位有效數(shù)字;雙精度實數(shù)提供15~16位有效數(shù)字。3.一個實型常量不分float和

double型,一個實型常量可以賦給一個float型或

double型變量,并根據(jù)變量的類型截取實型常量中相應(yīng)的有效位數(shù)字。問題

若程序重要處理的數(shù)據(jù)為:123.5和123.456789e10,設(shè)該數(shù)據(jù)分別用變量a、b保存,試問a、b的類型如何確定?分析:首先該數(shù)據(jù)均為實型;其次,根據(jù)數(shù)據(jù)的大小及精度,可確定a為float型即可,b必須為double型。

程序如下:main(){floata;doubleb;a=123.5;b=123.456789e10;printf("\na=%f,b=%f",a,b);}運行結(jié)果:

a=123.500000,b=1234567890000.000000若改為:floatb;運行結(jié)果如下:

a=123.500000,b=1234567954432.0000002.5字符型數(shù)據(jù)2.5.1字符常量1.字符常量:用單引號括起來的一個字符。

例如:‘a(chǎn)’‘A’‘$’‘!’

注:‘a(chǎn)’與‘A’是的字符常量。不同

2.轉(zhuǎn)義字符:以一個‘\’開頭的字符序列例如:‘\n’換行‘\t’橫向跳格(水平制表)‘\b’退格‘\f’走紙換頁‘\r’回車,移到本行開頭‘\0’空字符說明:“\ddd”與“\xhh”分別表示用八進(jìn)制數(shù)或十六進(jìn)制數(shù)表示一個字符。

例如:‘\123’‘\x65’‘\129’

由于\

”在C語言中都有了特殊的意義,故要想在字符串中使用它們,須在其前面再加上一個反斜線。例如:\\

反斜線\’

單引號

\”

雙引號若反斜線出現(xiàn)在以上未提到的字符前,則反斜線被忽略,而該字符就是它的字面表示。例如:\c

表示字符c例:main(){printf(“c\tlanguags\be\rC\n”);printf(“is\tusef\165\x6c”);}屏幕輸出:Clanguageisuseful2.5.2字符串常量1.定義:括在一對雙引號之內(nèi)的字符序列或轉(zhuǎn)義字符序列稱為字符串常量。例如:“Howareyou!”“a”“*abc\n\t”2.存儲:字符串中的字符依次存儲在內(nèi)存中一塊連續(xù)的區(qū)域內(nèi),并且把空字符‘\0’自動附加到字符串的尾部作為字符串的結(jié)束標(biāo)志。故字符個數(shù)為n的字符串在內(nèi)存中應(yīng)占n+1個字節(jié)?!産’與‘B’是否相同?‘b’與“b”是否相同?b為98,B為66'b'是字符常量,“b"是字符串常量2.5.3字符變量(存放字符常量的變量)定義形式:char

標(biāo)識符1,標(biāo)識符2,…

,標(biāo)識符n

例如:charc1,c2,c3,ch;c1=‘a(chǎn)’;c2=‘b’;c3=‘c’;ch=‘d’;說明:1.字符變量在內(nèi)存中占一個字節(jié)。2.在內(nèi)存中,是把字符對應(yīng)的ASCII碼值放到存儲單元中.3.字符型數(shù)據(jù)與整型數(shù)據(jù)之間可以通用.練習(xí):1.以下不合法的變量名為:

(A)_123(B)IF(C)e4(D)float2.給出下列字符串的輸出:

\\\’\054”

“\x56\”\\\c\ta”

“\\\n\t\bab”

輸出\‘,輸出V”\ca輸出\ab2.6變量賦初值1.初始化:在定義變量的同時為變量賦初值2.形式:類型標(biāo)識符變量名=常量或常量表達(dá)式

例如:

intx=10;charch=‘a(chǎn)’;變量賦初值允許使用符號常量

例如:

#definePI3.1415926…...floatx=PI;…...

可對被定義的變量的一部分賦初值

例如:

inta,b,c=1,d=2;floatr=2,l,s;可對幾個變量賦以同一個初值

例如:

inta=6,b=6,c=6;不要寫為:inta=b=c=6;2.7不同數(shù)據(jù)類型的數(shù)據(jù)間的混合運算2.7.1隱式轉(zhuǎn)換

隱式轉(zhuǎn)換的轉(zhuǎn)換規(guī)則:

intunsignedintlongintunsignedlongintdoubleshort,charfloat(1)float型數(shù)據(jù)一律轉(zhuǎn)換成double型數(shù)據(jù)。(2)char和shortint型數(shù)據(jù)一律轉(zhuǎn)換成int型數(shù)據(jù)

以上兩條轉(zhuǎn)換原則說明:即使兩個操作數(shù)類型相同,但只要它們同屬char,shortint或float類型,則轉(zhuǎn)換一定發(fā)生。整型、實型、和字符型可以混合運算;一般類型的數(shù)據(jù)先轉(zhuǎn)換為標(biāo)準(zhǔn)型;不同類型的要先轉(zhuǎn)換為相同類型。形式:隱式轉(zhuǎn)換(由系統(tǒng)自動進(jìn)行),顯式轉(zhuǎn)換(強制類型轉(zhuǎn)換)若兩個操作數(shù)類型不同,則按下列順序選取第一個適用的規(guī)則:(3)兩個操作數(shù)之一為double

型數(shù)據(jù),則另一個轉(zhuǎn)換成double

型(4)兩個操作數(shù)之一為

unsignedlongint

型數(shù)據(jù),則另一個轉(zhuǎn)換成unsignedlongint

型數(shù)據(jù)(5)兩個操作數(shù)之一為longint

型數(shù)據(jù),則另一個轉(zhuǎn)換成

longint

型數(shù)據(jù)(6)兩個操作數(shù)之一為unsignedint

型數(shù)據(jù),則另一個轉(zhuǎn)換成unsignedint

型數(shù)據(jù)例:若有:inti;floatf;doubled;longe;

試判斷表達(dá)式

3+‘b’+i*f-d/e的類型intunsignedintlongintunsignedlongintdoubleshort,charfloatdouble型2.7.2強制類型轉(zhuǎn)換

將指定表達(dá)式的值轉(zhuǎn)換為指定類型.

形式:(類型名)(表達(dá)式)例如:(double)(a+b)

說明:

(1)表達(dá)式應(yīng)用括號括起例如:(int)(x+y);(int)x+y;(2)在強制類型轉(zhuǎn)換時,得到一個所需類型的中間變量,原來變量類型未發(fā)生變化。例如:floatx=8.6;inty;y=(int)x;2.8算術(shù)運算符和算術(shù)表達(dá)式2.8.1基本算術(shù)運算符:

+-*/%說明:(1)上述運算符均為雙目運算符(即有兩個操作數(shù))(2)“+”“-”作單目運算符時分別為正值、負(fù)值運算符。(3)在“/”運算中,若操作數(shù)均為整數(shù),則執(zhí)行整除運算,舍去小數(shù)部分。例如:5/3=(4)“%”要求兩側(cè)均為整數(shù),“%”運算不能用于float和double型數(shù)據(jù)例如:5%3=2

2.8.2算術(shù)表達(dá)式和運算符的優(yōu)先級與結(jié)合性1.算術(shù)表達(dá)式:用算術(shù)運算符和括號將操作數(shù)連接起來的,符合C語法規(guī)則的式子。例如:‘a(chǎn)’+‘b’+a*b/c+2.82.優(yōu)先級:*/%高于+-3.結(jié)合性:“左結(jié)合性”或稱為“自左至右的結(jié)合方向”即運算對象先與左邊的運算符結(jié)合。例如:a-b+c2.8.3自增、自減運算符(++、--)作用:使變量的值增1或減1,如:++i,--i(使用之前,先使i的值加(減)1)

i++,i--(使用之后,使i的值加(減)1)

++i先執(zhí)行i=i+1,再使用i的值

i++先使用i的值,再執(zhí)行i=i+1例如:inta=1,b;b=++a;b=a++;說明:(1)++、--為單目運算符(2)++、--只能用于變量,而不能用于常量或表達(dá)式。

例如:10++,(x+y)++

,++’a’,b++中合法的為:(3)自增、自減運算符為右結(jié)合性(即自右至左)。例如:-a++

-(a++)

練習(xí)題1.設(shè)a=2,則執(zhí)行語句k=++a+a++后的k值為多少?k=6均為6(1)k=6a=5(2)k=15a=52.設(shè)a=2,b=9,則表達(dá)式a+b++/a++的值為多少?表達(dá)式a+(++b/++a)的值為多少?3.設(shè)a=2,若執(zhí)行語句k=(a++)+(a++)+(a++)后的k值為多少?若執(zhí)行語句k=(++a)+(++a)+(++a)后的k值為多少?2.9賦值運算符和賦值表達(dá)式2.9.1賦值運算符(=)形式:變量名=常量或表達(dá)式作用:將右邊常量或表達(dá)式的值賦給左邊的變量例如:a=3;b=c+d;2.9.2復(fù)合賦值運算符復(fù)合賦值運算符:在賦值符“=”之前加上其它運算符共有10種復(fù)合賦值運算符

+=,-=,*=,/=,%=

溫馨提示

  • 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

提交評論