![第2章 C語(yǔ)言的基本數(shù)據(jù)類型與表達(dá)式_第1頁(yè)](http://file4.renrendoc.com/view/af5f1728a236897c25f831237172a1d6/af5f1728a236897c25f831237172a1d61.gif)
![第2章 C語(yǔ)言的基本數(shù)據(jù)類型與表達(dá)式_第2頁(yè)](http://file4.renrendoc.com/view/af5f1728a236897c25f831237172a1d6/af5f1728a236897c25f831237172a1d62.gif)
![第2章 C語(yǔ)言的基本數(shù)據(jù)類型與表達(dá)式_第3頁(yè)](http://file4.renrendoc.com/view/af5f1728a236897c25f831237172a1d6/af5f1728a236897c25f831237172a1d63.gif)
![第2章 C語(yǔ)言的基本數(shù)據(jù)類型與表達(dá)式_第4頁(yè)](http://file4.renrendoc.com/view/af5f1728a236897c25f831237172a1d6/af5f1728a236897c25f831237172a1d64.gif)
![第2章 C語(yǔ)言的基本數(shù)據(jù)類型與表達(dá)式_第5頁(yè)](http://file4.renrendoc.com/view/af5f1728a236897c25f831237172a1d6/af5f1728a236897c25f831237172a1d65.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章基本數(shù)據(jù)類型與表達(dá)式張雪英C
語(yǔ)言程序設(shè)計(jì)1本章主要內(nèi)容本章介紹C語(yǔ)言的基礎(chǔ),包括:數(shù)據(jù)類型運(yùn)算符和表達(dá)式均是程序設(shè)計(jì)的基本知識(shí)為什么討論這些知識(shí)?通常程序要對(duì)數(shù)據(jù)進(jìn)行操作處理:處理的對(duì)象是數(shù)據(jù)通過(guò)運(yùn)算符和表達(dá)式進(jìn)行操作數(shù)制之間的轉(zhuǎn)換常用數(shù)制:二進(jìn)制、十進(jìn)制、八進(jìn)制、十六進(jìn)制十進(jìn)制:0123456789二進(jìn)制:01八進(jìn)制:01234567十六進(jìn)制:0123456789ABCDEF熟悉它們之間的轉(zhuǎn)化各種進(jìn)制轉(zhuǎn)換成十進(jìn)制例:(111011)2=1×25+1×24+1×23+0×22+1×21+1×20=(59)10例:(1F2A)16=1×163+15×162+2×161+10×160=(7978)10例:(136)8=1×82+3×81+6×80=(94)10十進(jìn)制轉(zhuǎn)換成各種進(jìn)制例:把十進(jìn)制數(shù)459轉(zhuǎn)換成十六進(jìn)制數(shù)
16459余111628余12161余101CB(459)10=(1CB)16二進(jìn)制與八進(jìn)制的轉(zhuǎn)換例:(1101001)2=001101001=(151)8例:(246)8=010100110=(10100110)2十進(jìn)制01234567二進(jìn)制000001010011100101110111例:(110101011111101)2=0011010101111101=(357D)16例:(4B9E)16
=(0100101110011110)2二進(jìn)制與十六進(jìn)制的轉(zhuǎn)換十進(jìn)制01234567二進(jìn)制00000001001000110100010101100111十進(jìn)制89101112131415二進(jìn)制10001001101010111100110111101111例如:【例2.1】計(jì)算圓的面積,半徑為5cm。程序如下:main(){float
r,area;
r=5;
area=3.14*r*r;
printf("%f\n",area);}運(yùn)算結(jié)果是輸出圓的面積:78.500000程序中用到的數(shù)據(jù):r、area、5、3.14對(duì)數(shù)據(jù)進(jìn)行的運(yùn)算:*、=分析:計(jì)算機(jī)操作處理時(shí),要完成以下工作:在內(nèi)存中給半徑r和運(yùn)算結(jié)果area
開辟存儲(chǔ)空間,存放它們的值。應(yīng)該留多大的地方來(lái)存放它們的值?數(shù)據(jù)
5和3.14與r
、area
不同,它們是在編寫程序時(shí)就給出確定的值,在運(yùn)算過(guò)程中不會(huì)改變。這樣的數(shù)計(jì)算機(jī)怎么處理?對(duì)整數(shù)5
和小數(shù)3.14,計(jì)算機(jī)存放時(shí)是否有區(qū)別?涉及數(shù)據(jù)類型的基本知識(shí)2.1C語(yǔ)言的數(shù)據(jù)類型C數(shù)據(jù)類型數(shù)組類型結(jié)構(gòu)體類型共用體類型枚舉類型整型字符型實(shí)型(浮點(diǎn)型)空類型單精度型雙精度型基本類型指針類型構(gòu)造類型本章討論基本類型數(shù)據(jù)2.1.1整型數(shù)據(jù)整型數(shù)據(jù)的類型基本整型數(shù)據(jù)int,分配2Byte短整型數(shù)據(jù)shortint,分配2Byte長(zhǎng)整型數(shù)據(jù)longint,分配4Byte整型數(shù)據(jù)均以二進(jìn)制補(bǔ)碼形式存儲(chǔ)問(wèn)題:為什么要采用補(bǔ)碼?如何表示?計(jì)算機(jī)中正、負(fù)數(shù)的表示例如:109=(1101101)2要區(qū)別:+109和-109方法是:將符號(hào)也數(shù)碼化即: 正的符號(hào)+用
0表示 負(fù)的符號(hào)-用
1表示∴計(jì)算機(jī)中的數(shù)表示方法是:
符號(hào)位+二進(jìn)制數(shù)值(以8bit為例)
+109→+1101101→01101101
-109→-1101101→11101101問(wèn)題:計(jì)算機(jī)計(jì)算復(fù)雜化例如計(jì)算:
(-5)+(+3)10000101+00000011解決的方法是:使用反碼或補(bǔ)碼的表示方法(按前述表示的編碼稱為原碼),即能將減法一律轉(zhuǎn)換為加法。需要判斷符號(hào)是否相同:如果相同,結(jié)果符號(hào)不變,并進(jìn)行絕對(duì)值相加如果不同,結(jié)果取絕對(duì)值大的數(shù)的符號(hào),并進(jìn)行絕對(duì)值相減原碼、反碼和補(bǔ)碼正數(shù):原碼、反碼、補(bǔ)碼相同符號(hào)位為0,數(shù)值為對(duì)應(yīng)的二進(jìn)制數(shù)。
+109[01101101]原=[01101101]反=[01101101]補(bǔ)負(fù)數(shù):原碼:符號(hào)位為1,數(shù)值為絕對(duì)值的二進(jìn)制數(shù)。 -109[11101101]原反碼:符號(hào)位為1,數(shù)值為絕對(duì)值的二進(jìn)制數(shù)各位變反。-109 [10010010]反
補(bǔ)碼:符號(hào)位為1,反碼加1。-109[10010011]補(bǔ)計(jì)算對(duì)比沒(méi)有采用原碼、反碼、補(bǔ)碼的計(jì)算例:(-5)+(+3)=
-5:10000101+3:00000011----------------=:10000010=(-2)
采用原碼、反碼、補(bǔ)碼的計(jì)算例:(-5)+(+3)=
-5:11111011+3:00000011----------------=:11111110=(-2)
按位取反,末位加1,轉(zhuǎn)化成原碼即可有符號(hào)和無(wú)符號(hào)整型數(shù)據(jù)有符號(hào)的整型數(shù)據(jù)
signedint無(wú)符號(hào)的整型數(shù)據(jù)
unsignedint區(qū)別是將最高位看作符號(hào)位還是數(shù)據(jù)位例:
1111111110101000作為有符號(hào)數(shù)使用時(shí),最高為符號(hào)位為負(fù)數(shù),值是:-88(再求一次補(bǔ))作為無(wú)符號(hào)數(shù)使用時(shí),最高為數(shù)據(jù)位為無(wú)符號(hào)的數(shù),值是:65448例如:【例2.2】有符號(hào)數(shù)和無(wú)符號(hào)數(shù)的輸出main(){
unsignedintm;m=65448;printf("\nm=%d\n",m);printf("m=%u\n",m);}輸出結(jié)果:m=-88m=65448按有符號(hào)數(shù)輸出按無(wú)符號(hào)數(shù)輸出整型數(shù)據(jù)的類型及規(guī)定方括號(hào)表示可選項(xiàng)int分配2Byte,long分配4Byte類型名稱類型符bit取值范圍整型(短整型)[signed]int[signed]short[int]16215~215-1(-32768~32767)無(wú)符號(hào)整型(無(wú)符號(hào)短整型)unsigned[int]unsignedshort[int]160~216-1(0~65535)長(zhǎng)整型[signed]long[int]32-231~231-1無(wú)符號(hào)長(zhǎng)整型unsignedlong[int]320~232-1有符號(hào)數(shù)和無(wú)符號(hào)整數(shù)inta=1;printf(“a=%d”,a);輸出:a=1
inta=-1;printf(“a=%d”,a);輸出:a=-1
inta=1;printf(“a=%u”,a);輸出:a=1
inta=-1;printf(“a=%u”,a);輸出:a=65535
unsignedinta=1;printf(“a=%d”,a);輸出:a=1
unsignedinta=1;printf(“a=%u”,a);輸出:a=1
unsignedinta=-1;printf(“a=%d”,a);輸出:a=-1
unsignedinta=-1;printf(“a=%u”,a);輸出:a=65535
2.1.2實(shí)型數(shù)據(jù)實(shí)型數(shù)據(jù)的類型
單精度實(shí)型數(shù)據(jù)float,分配4Byte雙精度實(shí)型數(shù)據(jù)double,分配8
Byte實(shí)型數(shù)據(jù)的存儲(chǔ)單精度實(shí)型指數(shù)部分小數(shù)部分
小數(shù)的符號(hào)位指數(shù)的符號(hào)位實(shí)型數(shù)據(jù)的類型及規(guī)定C標(biāo)準(zhǔn)并未具體規(guī)定各種實(shí)型數(shù)據(jù)所占字節(jié)數(shù),也不規(guī)定具體小數(shù)和指數(shù)部分的位數(shù)。一般而言,小數(shù)部分位數(shù)多,數(shù)據(jù)表示的有效數(shù)字多,精度就高;而指數(shù)部分位數(shù)多,則表示的數(shù)據(jù)范圍更大。有效數(shù)字的意義?類型類型符Byte絕對(duì)值的范圍有效數(shù)字單精度型float410-37~10387~8
位雙精度型double810-307~1030815~16位2.1.3字符型數(shù)據(jù)字符型數(shù)據(jù)char,分配1Byte
字符型數(shù)據(jù)是指字母、數(shù)字、各種符號(hào)等用ASCII值表示的字符字符型數(shù)據(jù)用''括起來(lái)
字符:
'A''a''Y''*''!''0'
字符串:
"ABC"
"a"
“123#$%8
“字符型數(shù)據(jù)在內(nèi)存中占一個(gè)字節(jié)。字符ASCII碼值為0~127,其中32~126為可打印字符,其余為不可打印字符2.2常量與變量常量:-在運(yùn)行程序的過(guò)程中值保持不變的量常量的類型:2.2.1整型常量整型常量
十進(jìn)制:由數(shù)字0~9組成八進(jìn)制:由數(shù)字0~7組成,以0開頭十六進(jìn)制:由數(shù)字0~9、A~F組成,以0x或0X
開頭例如:十進(jìn)制:
100-80+123八進(jìn)制:0100240100073十六進(jìn)制:0x380x100X100XFF整型常量整型常量的類型:根據(jù)值大小默認(rèn)類型。整型常量后面加l或L,則認(rèn)為是longint型
例如:123L、0L、432l、0x100l注意:十六進(jìn)制常量中可以使用大寫字母A~F,也可以使用小寫字母a~f。八進(jìn)制常量中不能出現(xiàn)數(shù)字8或9例如:018、0921非法在VC++中,int和long占內(nèi)存4個(gè)字節(jié),shortint占內(nèi)存2個(gè)字節(jié)實(shí)型常量實(shí)型常量十進(jìn)制形式
例:1.230.563.1519123.指數(shù)形式
例:123e3123e21.23e4
指數(shù)只能是整數(shù),而尾數(shù)則可以是整數(shù)也可以是小數(shù),無(wú)論指數(shù)或尾數(shù)均不能省略例如:1e、E.5、E-3
非法實(shí)型常量的類型:默認(rèn)為double型,后面加F(或f),則強(qiáng)調(diào)表示該數(shù)是float類型例如:3.5f、1e2F
字符型常量可視字符常量
單引號(hào)括起來(lái)的單個(gè)可視字符例如:'a'、'A'、'+'、'3'、''等
轉(zhuǎn)義字符常量
-單引號(hào)括起來(lái)的
\與可視字符組合,例如字符A可以有以下幾種表現(xiàn)形式
'A''\101''\x41'65
\0字符串結(jié)束標(biāo)志\n回車換行\(zhòng)t跳到下一個(gè)輸出位置\"雙引號(hào)字符\dddddd為1到3位八進(jìn)制數(shù)所代表的字符\xhhhh為1到2位十六進(jìn)制數(shù)所代表的字符字符串常量用雙引號(hào)括起的一個(gè)字符序列例如:"ABC"、"123"、"a"、"\n\t""\nGoodmorning"字符串常量的長(zhǎng)度:所包含的字符個(gè)數(shù)字符串常量的存儲(chǔ)方式:
所占存儲(chǔ)單元數(shù):串長(zhǎng)度+1字符串結(jié)束標(biāo)記例:輸出字符型常量【例2.3】字符型常量的輸出main(){
printf("\101\x42C\n");
printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");
}對(duì)于在printf()函數(shù)中輸出如下符號(hào):
\'
"%則必須以此方式輸出:
\\\'\"%%
字符串常量與字符常量的區(qū)別表示形式上的區(qū)別:字符:用'
作為分隔符字符串:用"
作為分隔符存儲(chǔ)上的區(qū)別:字符常量:占一個(gè)字節(jié)字符串常量:字符數(shù)+1不能將一個(gè)字符串常量賦給一個(gè)字符變量,C語(yǔ)言沒(méi)有專門的字符串變量,若要處理一個(gè)字符串,必須使用字符數(shù)組。符號(hào)常量用標(biāo)識(shí)符代表常量定義格式:#definePI3.1415定義后在程序中可用PI代替3.1415一般用大寫字母,是宏定義預(yù)處理命令,不是C語(yǔ)句,不用加;號(hào)使用優(yōu)點(diǎn):
-見名知意,含義清楚
-若需修改,可做到“一改全改”符號(hào)常量的例子:【例2.4】符號(hào)常量的使用#definePI3.1415main(){
floatr=2,l,area;
l=2*r*PI;area=PI*r*r;printf(“周長(zhǎng)l=%f\n“,l);printf(“面積area=%f“,area);
}使用符號(hào)常量2.2.2
變量
1.變量的有關(guān)概念在程序運(yùn)行過(guò)程中,其值改變的數(shù)據(jù),稱為變量,變量用標(biāo)識(shí)符表示,稱為變量名。變量必須“先定義(聲明),后使用”系統(tǒng)為變量分配存儲(chǔ)單元,存儲(chǔ)變量的值。
編寫程序時(shí)通過(guò)變量名來(lái)存、取變量值。a510變量值為變量分配的存儲(chǔ)單元變量名例如:有變量a它的值是5102.變量定義變量定義的一般格式:
數(shù)據(jù)類型說(shuō)明符變量列表;
例如:inti,j;
longk,m;floatx,y;charch1,ch2;必須使用合法的標(biāo)識(shí)符作變量名不能使用關(guān)鍵字為變量命名整型變量整型變量的分類:
-基本整型:int-短整型:shortint或short-長(zhǎng)整型:longint或long-無(wú)符號(hào)整型:unsignedint(short、long)注意它們的取值范圍,在VC中,給int數(shù)據(jù)分配4個(gè)字節(jié)的空間。所以int和long的范圍一樣【例2.5】整型變量的使用main(){
inta,b,c,d;
unsignedu;a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d\n”,c);printf(“b+u=%d”,d);
}整型變量的定義與作用整型數(shù)據(jù)的溢出0111111111111111【例2.6】整型數(shù)據(jù)的溢出main(){
shortinta,b;
a=32767;b=a+1;printf(“a=%d\n”,a);printf(“b=%d”,b);
}1000000000000000實(shí)型變量實(shí)型變量的分類:實(shí)型變量的定義例:floata,b,c;doublex,y;字符型變量字符型變量的定義:例:chara=‘*’,b=‘0’,c;由于字符變量與整型變量在內(nèi)存中的存儲(chǔ)形式類似,所以字符型數(shù)據(jù)和整型數(shù)據(jù)之間通用,字符型變量可以作為整型變量來(lái)處理。
字符型變量與整型變量的例子【例2.7】字符型數(shù)據(jù)與整型數(shù)據(jù)main(){
charc1,c2,c3;
inti;c1=97;c2=98;c3=99;i=‘c’;printf(“%c%c%c\n”,c1,c2,c3);printf(“%d%d%d\n”,c1,c2,c3);printf(“%c%d”,i,i);
}3.變量的初始化:允許在定義變量的時(shí)候?qū)ψ兞抠x初值。
inta=5;/*定義a為整型變量,初值為5*/
floatf=3.2;/*定義f為實(shí)型變量,初值為3.2*/charc1=‘a(chǎn)’
/*定義c1為字符型變量,初值‘a(chǎn)’*/
C語(yǔ)言允許對(duì)部分變量初始化。
inta=1,b,c=3;但不允許對(duì)幾個(gè)變量同時(shí)賦同一個(gè)初值
錯(cuò)誤:inta=3+b,b=5;
inta=b=c=3;
inta,b,c;a=b=c=3;2.3運(yùn)算符和表達(dá)式主要內(nèi)容:算術(shù)運(yùn)算符和算術(shù)表達(dá)式賦值運(yùn)算符和賦值表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式位運(yùn)算符和位運(yùn)算表達(dá)式條件運(yùn)算符和條件表達(dá)式逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式其他運(yùn)算符及其運(yùn)算運(yùn)算符的有關(guān)概念作用:對(duì)運(yùn)算對(duì)象完成規(guī)定的操作運(yùn)算類型:按運(yùn)算對(duì)象分:?jiǎn)文?、雙目、三目按功能分:算術(shù)、賦值、關(guān)系、邏輯條件、逗號(hào)、位、其他運(yùn)算符的優(yōu)先級(jí)和結(jié)合性優(yōu)先級(jí)指各種運(yùn)算符號(hào)的運(yùn)算優(yōu)先順序例如:算術(shù)運(yùn)算優(yōu)先于關(guān)系運(yùn)算算術(shù)運(yùn)算中先*/后+-結(jié)合性指運(yùn)算符號(hào)和運(yùn)算對(duì)象的結(jié)合方向從左向右(左結(jié)合)和從右向左(右結(jié)合)例如:算術(shù)運(yùn)算符為左結(jié)合
a-b+4
賦值運(yùn)算符為右結(jié)合
a=b=5本章涉及的運(yùn)算符+-*/%++--+-=+=-=*=/=%=&=|=^=>>=<<=><>=<===!=&&||!&|^~<<>>?:,&sizeof(數(shù)據(jù)類型標(biāo)識(shí)符)類型種類算術(shù)運(yùn)算符賦值運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符位運(yùn)算符條件運(yùn)算符逗號(hào)運(yùn)算符其他運(yùn)算符表達(dá)式的有關(guān)概念什么是表達(dá)式由運(yùn)算符將運(yùn)算對(duì)象連接成的式子,它描述了一個(gè)具體的求值運(yùn)算過(guò)程。例:1+2*3-43>5-7a=b%2計(jì)算表達(dá)式的值按照運(yùn)算符的運(yùn)算規(guī)則求值求值時(shí)注意運(yùn)算符的優(yōu)先級(jí)和結(jié)合性表達(dá)式值的類型自動(dòng)轉(zhuǎn)換強(qiáng)制轉(zhuǎn)換例如:表達(dá)式:150+'b'*2-12.456b=(++a)-2a/=a*=(a=2)f=a>b>c--a||++b&&c++max=a>b?a:ba=3,a+=3,a*a 1/(float)a+6算術(shù)運(yùn)算算術(shù)運(yùn)算符的優(yōu)先級(jí)
()+-++--
*/%
+-
同級(jí)同級(jí)同級(jí)
單目雙目
高
低沒(méi)有乘方運(yùn)算符,要計(jì)算a3要寫作a*a*a的連乘,或用標(biāo)準(zhǔn)庫(kù)函數(shù)pow(a,3)“/”:5/2=25.0/2=2.5“%”:要求運(yùn)算對(duì)象必須是整型數(shù)據(jù),功能是求兩數(shù)相除的余數(shù),余數(shù)的符號(hào)與被除數(shù)的符號(hào)相同。(若a%b的結(jié)果為0,則表示a被b整除)自增自減運(yùn)算++--是單目運(yùn)算符有前綴和后綴兩種形式
前綴形式:先自增(自減)再引用;后綴形式:先引用再自增(自減);功能:前綴形式++a
等價(jià)于
a=a+1
--
a
等價(jià)于
a=a–1后綴形式a++
等價(jià)于a=a+1
a--
等價(jià)于a=a–1表達(dá)式的值會(huì)不同例如:當(dāng)a=5時(shí)⑴++a表達(dá)式的值為6,且
a=6⑵
a++表達(dá)式的值為5,且
a=6⑶
b=++a
等價(jià)于
a=a+1;b=a表達(dá)式的值為6,且a=6,
b=6⑷b=a++等價(jià)于
b=a;a=a+1表達(dá)式的值為5,且a=6,
b=5
說(shuō)明:++和--的運(yùn)算對(duì)象只能是變量(或運(yùn)算結(jié)果是變量的表達(dá)式),不能是常量(或運(yùn)算結(jié)果是數(shù)值的表達(dá)式)。例如:
5++、(a+2)++
不合法。具有右結(jié)合性,結(jié)合方向?yàn)閺挠业阶蟆@纾?/p>
–a++
等價(jià)于-(a++)
如果有多個(gè)運(yùn)算符連續(xù)出現(xiàn)時(shí),C系統(tǒng)盡可能多的從左到右將字符組合成一個(gè)運(yùn)算符例如:
i+++j
等價(jià)于(i++)+j
-i+++-j
等價(jià)于-(i++)+(-j)
例如:當(dāng)a=3時(shí)⑴b=(++a)+(a++)
b=a=⑵b=(a++)+(a++)b=a=⑶b=(++a)+(++a)b=a=b=8a=5b=6a=5b=10a=5例:a=3時(shí)⑴printf(“%d\n”,-a++);⑵printf(“%d”,a);當(dāng)a=3時(shí)(tc運(yùn)行)⑴b=(++a)+(++a)+(++a)
b=a=⑵b=(a++)+(a++)+(a++)b=a=⑶b=(++a)+(a++)+(++a)b=a=(4)b=(++a)+(a++)+(a++)b=a=例如a=3時(shí)(vc運(yùn)行)⑴b=(++a)+(++a)+(++a)
b=a=⑵b=(a++)+(a++)+(a++)b=a=⑶b=(++a)+(a++)+(++a)b=a=(4)b=(++a)+(a++)+(a++)b=a=16696136126說(shuō)明:對(duì)函數(shù)參數(shù)的求值順序:VisualC++系統(tǒng)先計(jì)算最右邊的參數(shù)值,再依次計(jì)算左面的參數(shù)值。
例:main(){inti,j;i=8;j=10;printf(“%d,%d,%d,%d\n”,i,j,++i,j++);
}①②③④說(shuō)明:【例2.8】有多個(gè)函數(shù)參數(shù)且為同一變量多次自增的運(yùn)算處理。main(){inta=5;printf(“%d,%d\n",a,(a++)+(a++));}printf(“%d,%d\n",a,(a++)+(++a));printf(“%d,%d\n",a,(++a)+(++a));printf(“%d,%d\n",a,(a++)+(++a)+(++a));說(shuō)明:雙目運(yùn)算符兩邊的運(yùn)算類型必須一致才能進(jìn)行操作。所得結(jié)果類型與運(yùn)算類型一致如運(yùn)算符兩邊類型不一致,系統(tǒng)將自動(dòng)把兩邊轉(zhuǎn)換成相同類型后,進(jìn)行運(yùn)算
--整型→實(shí)型
--短整型→長(zhǎng)整型
--有符號(hào)→無(wú)符號(hào)所有實(shí)數(shù)均以雙精度方式進(jìn)行?!纠?.9】求表達(dá)式的值floata=2.0;intb=6,c=3;求:a*b/c-1.5+’a’+fabs(-5)=104.5(double)例:賦值運(yùn)算賦值運(yùn)算符(右結(jié)合)
=+=-=*=/=%=&=|=^=>>=<<=賦值表達(dá)式將表達(dá)式的值存入變量對(duì)應(yīng)的內(nèi)存單元中m=12b=(++a)-2m%=3+n等價(jià)于
m=m%(3+n)x*=(x=5)說(shuō)明:賦值號(hào)左邊必須是變量,右邊可以是C語(yǔ)言任意合法的表達(dá)式例如:n=t+2<s合法
a+b=15
不合法賦值運(yùn)算符僅優(yōu)先于“,”,且具有右結(jié)合性例如:
a=b=b*c>10等價(jià)于:a=(b=(
(b*c)>10)
)賦值號(hào)與數(shù)學(xué)中的等號(hào)含義不同例如:數(shù)學(xué)中
a=b
等價(jià)于
b=aC語(yǔ)言中
a=b不等價(jià)于
b=a說(shuō)明:將float、double數(shù)據(jù)賦給整型變量,舍棄實(shí)數(shù)的小數(shù)部分例如:inti;i=3.56/*i=3*/將整型數(shù)據(jù)賦給float、double變量,數(shù)值不變,以浮點(diǎn)數(shù)形式存儲(chǔ)到變量中例如:
floatf1=23;/*f1=23.00000*/
doublef2=23;/*f2=23.00000000000000*/將double型數(shù)據(jù)賦給float型數(shù)據(jù),注意數(shù)值范圍,不能溢出說(shuō)明:將char型數(shù)據(jù)賦給int變量,字符占1個(gè)字節(jié),int占2個(gè)字節(jié)。例如:charc=‘\376’;/*=254*/inti;
i=c;111111100000000011111110111111101111111111111110Visualc++系統(tǒng)Ci說(shuō)明將int、short、long數(shù)據(jù)賦給char變量,將其低8位原封不動(dòng)地送到char變量中例如:inti=289;charc;
c=i;printf(“%c”,c);000000010010000100100001!
C語(yǔ)言使用靈活,在不同類型數(shù)據(jù)之間賦值時(shí),常常會(huì)出現(xiàn)意想不到的結(jié)果,而編譯系統(tǒng)并不提示出錯(cuò),全靠編程者的經(jīng)驗(yàn)來(lái)找出問(wèn)題,因此,這部分內(nèi)容不必死記,最好的方法是通過(guò)上機(jī)實(shí)踐來(lái)掌握例:【例2.10】賦值運(yùn)算符的運(yùn)用例:設(shè)a=10,計(jì)算表達(dá)式:a+=a-=a*10a+=a-=a*=10例:main(){inta=1,b=2,c=3;printf(“%d,%d,%d,%d\n”,a=b=c,a=b==c,a==(b=c),a==(b==c));/*結(jié)果:-180*//*結(jié)果:0*//*結(jié)果:3,1,0,0*/關(guān)系運(yùn)算關(guān)系運(yùn)算符(左結(jié)合)
>>=<<=
==!=較高較低關(guān)系表達(dá)式用關(guān)系運(yùn)算符將運(yùn)算對(duì)象連接成的式子例如:12<'C'+1(字符型數(shù)據(jù)比較ASCII值)a==b>=c等價(jià)于a==(b>=c)與(a==b)>=c不等價(jià)關(guān)系運(yùn)算符優(yōu)先于賦值,低于算術(shù)說(shuō)明:關(guān)系運(yùn)算的結(jié)果應(yīng)該是邏輯值。C語(yǔ)言用數(shù)值用
1表示邏輯真,0
表示邏輯假例如:7>5的值是1,5>7的值是0
'a'>'b'的值是0,'a'<'b'的值是1即關(guān)系表達(dá)式的值:0或1實(shí)型數(shù)可進(jìn)行大于或小于比較,但通常不進(jìn)行
==
或
!=
的關(guān)系運(yùn)算例:floata,b;若要判斷a與b是否相等
則用:fabs(a-b)<1e-6
來(lái)判斷說(shuō)明:不能用數(shù)學(xué)里習(xí)慣的關(guān)系運(yùn)算符連用表示區(qū)間關(guān)系例如:設(shè)x=-2,-3<x<-1
的值是?設(shè)x=1,2<x<4的值?例:inti=1,j=7,a;
a=i+(j%4!=0);
則a=?例:‘a(chǎn)’>0結(jié)果=?‘A’>100結(jié)果=?邏輯運(yùn)算符邏輯運(yùn)算符&&||!邏輯運(yùn)算符的運(yùn)算規(guī)則運(yùn)算對(duì)象邏輯運(yùn)算結(jié)果aba&&ba||b!a非0非0110非000100非001100001邏輯表達(dá)式邏輯表達(dá)式用邏輯運(yùn)算符將運(yùn)算對(duì)象連接成的式子
例如:0&&'b'a&&b||c&&da||b-5||c/4!x+y>=z邏輯運(yùn)算符的優(yōu)先級(jí)和結(jié)合性:!是單目運(yùn)算符,右結(jié)合,高于算術(shù)&&和||是雙目運(yùn)算符,左結(jié)合,高于賦值運(yùn)算符,低于關(guān)系運(yùn)算符邏輯運(yùn)算規(guī)則從左到右依次進(jìn)行邏輯計(jì)算運(yùn)算對(duì)象為非0表示邏輯真運(yùn)算對(duì)象為0表示邏輯假邏輯運(yùn)算的結(jié)果
-邏輯成立,結(jié)果為
1
-邏輯不成立,結(jié)果為
0例如:設(shè)a=15,b=0,c=-2a&&b&&c/*=0*/a||b||c/*=1*/(a+c)||b&&c/*=1*/邏輯運(yùn)算規(guī)則運(yùn)算按照從左至右的順序進(jìn)行,一旦能夠確定邏輯表達(dá)式的值,就立即結(jié)束運(yùn)算——邏輯運(yùn)算的短路性質(zhì)例如設(shè):a=1,b=0,c=-2a&&b&&c(a++)||++b&&--c為0,運(yùn)算終止,表達(dá)式值為0為非0,運(yùn)算終止,表達(dá)式值為1且a為2,b為0,c為-2(b,c保持原值)邏輯運(yùn)算符舉例:【例2.11】邏輯運(yùn)算符的短路特性例:設(shè)a=0,b=1,c;
c=a++&&(b=3);執(zhí)行后:a=,b=,c=例:inta=1,b=1,c=0,d;d=--a||b--||(c=b+3);
執(zhí)行后:a=,b=,c=,d=1100001關(guān)系與邏輯運(yùn)算符的應(yīng)用表示數(shù)學(xué)公式a>b>c
a>b&&b>c判斷a,b,c三條線段能否組成一個(gè)三角形a+b>c&&a+c>b&&b+c>aa,b不同時(shí)為負(fù)
a>=0||b>=0!(a<0&&b<0)(a<0&&b>=0)||(a>=0&&b<0)||(a>=0&&b>=0)關(guān)系與邏輯運(yùn)算符的應(yīng)用n是小于m的偶數(shù)
n<m&&n%2==0year是閏年:能被4整除但不能被100整除,或能被400整除的年是閏年y%4==0&&y%100!=0||y%400==0條件表達(dá)式運(yùn)算條件運(yùn)算符:?:條件表達(dá)式的一般形式
表達(dá)式1?表達(dá)式2:表達(dá)式3例如:a>b?a:ba++>=10&&b-->20?a:b(x=3+a)>5?100:200C語(yǔ)言中唯一的三目運(yùn)算符,要正確區(qū)分用?和:分隔的表達(dá)式涉及條件運(yùn)算符的優(yōu)先級(jí)與結(jié)合性條件運(yùn)算符優(yōu)先級(jí)條件運(yùn)算符優(yōu)先級(jí)高于賦值、逗號(hào)運(yùn)算符,低于其他運(yùn)算符條件運(yùn)算符具有右結(jié)合性當(dāng)一個(gè)表達(dá)式中出現(xiàn)多個(gè)條件運(yùn)算符時(shí),應(yīng)該將位于最右邊的問(wèn)號(hào)與離它最近的冒號(hào)配對(duì),并按這一原則正確區(qū)分各條件運(yùn)算符的運(yùn)算對(duì)象。例如:w<x?x+w:x<y?x:y
與w<x?x+w:(x<y?x:y)等價(jià)與(w<x?x+w:x<y)?x:y不等價(jià)條件運(yùn)算符舉例:例1:if(a>b)printf(“%d”,a);
ellseprintf(“%d”,b);
可以用條件表達(dá)式替代:
printf(“%d”,a>b?a:b);
例2:求a+|b|
printf(“a+|b|=%d\n”,b>0?a+b:a-b);例3:判斷是否是小寫字母,如是,則轉(zhuǎn)換成大寫字母
(c>=‘a(chǎn)’&&c<=‘z’)?c-32:c逗號(hào)運(yùn)算符表達(dá)式逗號(hào)表達(dá)式的一般形式
表達(dá)式1,表達(dá)式2,……,表達(dá)式n逗號(hào)表達(dá)式的值從左向右,依次對(duì)表達(dá)式求值,最后得到表達(dá)式n
的值就是整個(gè)逗號(hào)表達(dá)式的值例如:
⑴a=5,a++,a*3
表達(dá)式值為18,且a=6⑵t=1,t+5,t++表達(dá)式值為1,且t=2⑶x=(a=3*5,
a*4
)
表達(dá)式值為60,且x=60,a=15逗號(hào)表達(dá)式運(yùn)算例1:inta=1,b=2,c=3;
printf(“%d,%d,%d”,a,b,c);/*結(jié)果:1,2,3*/
printf(“%d,%d,%d”,(a,b,c),b,c);/*結(jié)果:3,2,3*/例2:main(){intx,y=7;floatz=4;x=(y=y+6,y/z);printf(“x=%d\n”,x);}長(zhǎng)度運(yùn)算符sizeof為單目運(yùn)算符運(yùn)算對(duì)象只能是變量名或數(shù)據(jù)類型標(biāo)識(shí)符
運(yùn)算結(jié)果為該變量或該數(shù)據(jù)類型的長(zhǎng)度
例:main(){inta=5;doublex;
printf("%d%d",sizeof(int
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年旅行社服務(wù)項(xiàng)目建議書
- 2025年微波輻射計(jì)、微波散射計(jì)、測(cè)高計(jì)項(xiàng)目發(fā)展計(jì)劃
- 實(shí)施精準(zhǔn)營(yíng)銷策略提高市場(chǎng)占有率水平
- 光學(xué)鏡片透光率測(cè)量基準(zhǔn)
- 辦公環(huán)境改善措施細(xì)則
- 城市地下綜合管廊建設(shè)與管理技術(shù)研究
- 格林童話選故事解讀
- 1-3-Methoxyphenyl-piperazine-生命科學(xué)試劑-MCE
- 公司年會(huì)演講致辭稿件范本
- 企業(yè)員工激勵(lì)計(jì)劃及策劃方案的說(shuō)明
- 《紙杯變變變》課件
- 2024年山東魯商集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 財(cái)務(wù)部門職責(zé)財(cái)務(wù)部工作職能
- 《月歷上的數(shù)字的奧秘》
- 班級(jí)公約(完美版)
- 第六章ACS6000勵(lì)磁單元
- 醫(yī)療衛(wèi)生監(jiān)督協(xié)管巡查記錄表
- 水利工程資料匯編全套
- 教科版科學(xué)四年級(jí)下冊(cè)第一單元《植物的生長(zhǎng)變化》單元作業(yè)設(shè)計(jì)
- 中國(guó)交建模板
- 《寒假開學(xué)第一課》課件
評(píng)論
0/150
提交評(píng)論