第2章c語言學(xué)習(xí)_第1頁
第2章c語言學(xué)習(xí)_第2頁
第2章c語言學(xué)習(xí)_第3頁
第2章c語言學(xué)習(xí)_第4頁
第2章c語言學(xué)習(xí)_第5頁
已閱讀5頁,還剩55頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言程序假想第2章C語言全然北京科技大學(xué)統(tǒng)計機系2本章關(guān)鍵內(nèi)容

本章講解C語言的全然,包羅:

信息類型

運算符和表達式

均是程序假想的根本學(xué)問

為啥會商這些學(xué)問?同樣程序要對信息履行操縱操作:操作的對象是信息通過運算符和表達式履行操縱2022/3/313例似:【例2,1】統(tǒng)計圓的面積,半徑為5cm.程序似下:例jc2_1main(){floatr,area;r=5;area=3,14*r*r;printf("%f\n",area);}運算結(jié)論是輸出圓的面積:78,500000程序中用到的信息:r、area、5,3,14對信息履行的運算:*、=2022/3/314解析:波及信息類型的根本學(xué)問統(tǒng)計機操縱操作時,要實現(xiàn)以下任務(wù):在內(nèi)存中給半徑r和運算結(jié)論area開發(fā)存儲空間,存放它們的值.該當(dāng)留多大的地點來存放它們的值?信息5和3,14與r、area差不,它們是在編寫程序時就給出肯定的值,在運算環(huán)節(jié)中不大概扭轉(zhuǎn).似許的數(shù)統(tǒng)計機如何操作?對整數(shù)5和小數(shù)3,14,統(tǒng)計機存放時是否有區(qū)不?2022/3/315C語言的信息類型本章會商根本類型信息整型字符型實型(浮點型)根本類型單精度型空類型數(shù)組類型結(jié)構(gòu)體類型共用體類型羅列類型雙精度型C信息類型組織類型指針類型2022/3/3162,1,1整型信息1.根本整型信息int,安排2Byte短整型信息shortint,安排2Byte長整型信息longint,安排4Byte整型信息的類型整型信息均以二進制補碼情勢存儲題目:為啥要接收補碼?如果何示意?2022/3/317統(tǒng)計機中正、負數(shù)的示意例似:109=(1101101)2要區(qū)不:+109和-109方式是:將符號也數(shù)碼化即:正的符號+用0示意負的符號-用1示意∴統(tǒng)計機中的數(shù)示意方式是:符號位+二進制數(shù)值(以8bit為例)+109→+1101101→01101101-109→-1101101→111011012022/3/318題目:統(tǒng)計機統(tǒng)計復(fù)雜化例似統(tǒng)計:(-19)+(+22)10010011+00010110需要判斷符號是否同樣:介入同樣,結(jié)論符號不變,同時履行絕對值相加介入差不,結(jié)論取絕對值大的數(shù)的符號,處理的方式是同時履行絕對值相減:使用反碼或補碼的示意方式(按前述示意的編碼稱為原碼),即能將減法一概變形為加法.2022/3/319原碼、反碼和補碼

正數(shù):原碼、反碼、補碼同樣

符號位為0,數(shù)值為對應(yīng)的二進制數(shù).

+109[01101101]原=[01101101]反=[01101101]補負數(shù):原碼符號位為1,數(shù)值為絕對值的二進制數(shù).-109[11101101]原反碼符號位為1,數(shù)值為絕對值的二進制數(shù)列位變反.-109補碼符號位為1,數(shù)值為絕對值的二進制數(shù)列位變反加1,-109[10010010]反[10010011]補2022/3/31102,有符號和無符號整型信息–有符號的整型信息signedint–無符號的整型信息unsignedint–區(qū)不是將最高位看作符號位仍是信息位例似:做為有符號數(shù)使用時,最高為符號位為負數(shù),值是:-88(再求一次補)做為無符號數(shù)使用時,最高為信息位為無符號的數(shù),值是:6544811111111101010002022/3/3111例似:main(){unsignedintm;按有符號數(shù)輸出m=65448;printf("\nm=%d\n",m);printf("m=%u\n",m);例jc2_a}輸出結(jié)論:m=-88按無符號數(shù)輸出m=654482022/3/3112整型信息的類型及法那么類型標(biāo)題類型符bit取值范疇整型[signed]int[signed]short[int]unsigned[int]16-215~215-1(短整型)-(-32768~32767)160~216-1無符號整型(0~65535)長整型[signed]long[int]unsignedlong[int]3232-231~231-10~232-1無符號長整型

方括號示意可選項

int安排2Byte,long安排4Byte2022/3/31132,1,2實型信息1.實型信息的類型單精度實型信息float,安排4Byte雙精度實型信息double,安排8Byte2.實型信息的存儲小數(shù)部分指數(shù)部分單精度實型小數(shù)的符號位指數(shù)的符號位2022/3/3114實型信息的類型及法那么類型類型符Byte絕對值的范疇有效數(shù)字單精度型雙精度型floatdouble4810-37~10387~8位10-307~1030815~16位

C規(guī)格同時未具體法那么各種實型信息所占字節(jié)數(shù),也不法那么詳渺小數(shù)和指數(shù)部分的位數(shù).

同樣而言,小數(shù)部分位數(shù)多,信息示意的有效數(shù)字多,精度就高;而指數(shù)部分位數(shù)多,那么示意的信息范疇更大.有效數(shù)字的意義?例jC2_a2022/3/31152,1,3字符型信息

字符型信息char,安排1Byte

字符型信息是指字母、數(shù)字、各種符號等用ASCII值示意的字符

例似'a'是一個char類型信息,稱作字符常量,存儲:011000012,1,4空類型

空類型void

同樣與指針或函數(shù)結(jié)合使用2022/3/31162,2常量、變量與規(guī)格函數(shù)

關(guān)鍵內(nèi)容:

常量

變量

規(guī)格庫函數(shù)2022/3/31172,2,1常量

在運路程序的環(huán)節(jié)中值連結(jié)不變的量

1.整型常量

十進制:0~9

八進制:0~7,以0開頭

十六進制:0~9,A~Fa~f,以0x或0X例似:開頭100-80+12301002401000730x380x100X100XFF0x0a2022/3/31181,整型常量

整型常量的類型:

依照值大小默許類型.

整型常量背面加l或L,那么信任是longint型

例似:123L、0L、432l、0x100l看重:十六進制常量中可以使用大寫字母A~F,也能夠使用小寫字母a~f.八進制常量中不能展示數(shù)字8或9例似:018,0921非法2022/3/31192,實型常量–十進制情勢––指數(shù)情勢1,01,+12,0-12,00.0–1e31,8e-3-123E-6-.1E-3等價于:1×1031,8×10-3-123×10-6-0.1?×指數(shù)只能是10-3整數(shù),而尾數(shù)那么可所以整數(shù)也可所以小數(shù),不管指數(shù)或尾數(shù)均不能省略例似:1e、E.5,E-3非法實型常量的類型:默許為double型,背面加F(或f),那么突出示意該數(shù)是float類型例似:3,5f、1e2F???2022/3/31203,字符型常量

可視字符常量

單引號括起來的單個可視字符

例似:'a'、'A'、'+'、'3'、''等

轉(zhuǎn)義字符常量

單引號括起來的\與可視字符組合,例似:\0字符串終了標(biāo)記\n回車換行跳到下一個輸出位置雙引號字符ddd為1到3位八進制數(shù)所代表的字符hh為1到2位十六進制數(shù)所代表的字符\t\"\ddd\xhh2022/3/31214,字符串常量

用雙引號括起的一個字符序列

例似:"ABC"、"123"、"a"、"\n\t"

字符串常量的長度:

所包涵的字符個數(shù)

字符串常量的存儲方式:"\nGoodmorning"字符串終了標(biāo)記

所占存儲單元數(shù):串長度+1例似:a\0\nGoodmorning\02022/3/31225,符號常量

以標(biāo)識符來代表的常量

事先編譯預(yù)操作號令define定義

編譯時先由系統(tǒng)更換為它所代表的常量,再履行編譯

例似:#defineLEN2,5定義符號常量main(){floata,b;a=2*3,14*LEN;b=3,14*LEN*LEN;printf("a=%f,b=%f\n",a,使用符號常量b);}編譯前系統(tǒng)履行更換2022/3/31235,符號常量main(){floata,b;更換為a=2*3,14*2,5;b=3,14*2,5*2,5;printf("a=%f,b=%f\n",a,b);}?define是編譯預(yù)操作號令,必須以“#”開頭?編譯預(yù)操作號令在第7章會商.2022/3/31242,2,2變量1,變量的有關(guān)概念在程序運行環(huán)節(jié)中,其值扭轉(zhuǎn)的信息,稱為變量,變量用標(biāo)識符示意,稱為變量名.變量必須“先定義后使用”系統(tǒng)為變量安排存儲單元,存儲變量的值.編寫程序時通過變量名來存、取變量值.變量名例似:a有變量a它的值是510510變量值為變量安排的存儲單元2022/3/31252,變量定義變量定義的同樣標(biāo)準(zhǔn):信息類型講明符變量列表;例似:inti,j;longk,m;floatx,y;charch1,ch2;?必須使用合法的標(biāo)識符作變量名?不能使用關(guān)鍵字為變量命名2022/3/31263,變量的初始化:許可在講明變量的時辰對變量賦初值.例似:inta=5,b=10+2;doublex=23,568,y;charch1='a',ch2=66,ch3='\142';示意定義變量同時對變量存儲單元賦值.差錯的初始化:inta=3+b,b=5;floatm=n=23,16;2022/3/31272,2,3規(guī)格庫函數(shù)

由C編譯系統(tǒng)定義的一種函數(shù),存放在系統(tǒng)函數(shù)庫中,用戶可以依照需要隨時調(diào)用

常用函數(shù)

似:printf、scanf、fabs、sqrt、sin、

(常用數(shù)學(xué)函數(shù)參賜教材P30表2,5)

函數(shù)調(diào)用情勢:

函數(shù)名([指標(biāo)表])

例似:putchar('a')例jc2_3

sqrt(x)2022/3/31282,3運算符和表達式

關(guān)鍵內(nèi)容:

算術(shù)運算符和算術(shù)表達式

賦值運算符和賦值表達式

關(guān)系運算符和關(guān)系表達式

邏輯運算符和邏輯表達式

位運算符和位運算表達式

前提運算符和前提表達式

逗號運算符和逗號表達式

其他運算符及其運算2022/3/3129運算符的有關(guān)概念

作用:

對運算對象實現(xiàn)法那么的操縱運算

類型:

按運算對象分:

單目、雙目、三目

按功能分:

算術(shù)、賦值、關(guān)系、邏輯

前提、逗號、位、其他2022/3/3130運算符的優(yōu)先級和結(jié)合性

優(yōu)先級

指各種運算符號的運算優(yōu)先次序

例似:算術(shù)運算優(yōu)先于關(guān)系運算

結(jié)合性算術(shù)運算中先*后+-

指運算符號和運算對象的結(jié)合方向

分為:從左向右(左結(jié)合)和從右向左(右結(jié)合)

例似:算術(shù)運算符為左結(jié)合a-b+4

賦值運算符為右結(jié)合a=b=2022/3/3131本章波及的運算符類型品種算術(shù)運算符+-*%++--=+=-=*==%=+-賦值運算符關(guān)系運算符邏輯運算符位運算符前提運算符逗號運算符其他運算符&=|=^=>>=<<=><>=<===!=&&||!&|^~<<>>?:,&sizeof(信息類型標(biāo)識符)2022/3/3132表達式的有關(guān)概念

啥是

由運算符將運算對象毗連成的式子,它表達式描述了一個具體的求值運算環(huán)節(jié).

統(tǒng)計表達式的值

依照運算符的運算法那么求值

求值時看重運算符的優(yōu)先級和結(jié)合性

自動變形

強制變形表達式值的類型2022/3/3133例似:

表達式:

150+'b'*2-12,456

b=(++a)-2

a=a*=(a=2)

f=a>b>c

--a||++b&&c++

max=a>b?a:b

a=3,a+=3,a*a

1(float)a+62022/3/3134算術(shù)運算

算術(shù)運算符的優(yōu)先級()+-++--*%+-同級同級同級單目雙目高低

沒有乘方運算符,要統(tǒng)計a3要寫作a*a*a的連乘,或用規(guī)格庫函數(shù)pow(a,3)

“”的運算對象可為各品種型信息,但是當(dāng)履行兩個整型信息相除時,運算結(jié)論也是整型信息

“%”要求運算對象必須是整型信息,功能是求兩數(shù)相除的余數(shù),余數(shù)的符號與被除數(shù)的符號同樣.2022/3/3135自增自減運算

++--是單目運算符

有前綴和后綴兩種情勢

前綴情勢:先自增(自減)再援用;

后綴情勢:先援用再自增(自減);

功能:表達式的值會差不

前綴情勢++a等價于--a等價于a++等價于a--a=a+1a=a–1后綴情勢a=a+1a=a–等價于12022/3/3136例似:當(dāng)a=5時⑴++a表達式的值為6,且a=6⑵a++表達式的值為5,且a=6⑶b=++a等價于a=a+1;b=a表達式的值為6,且a=6,b=6⑷b=a++等價于b=a;a=a+1表達式的值為5,且a=6,b=52022/3/3137講明:

++和--的運算對象只能是變量(或運算結(jié)論是變量的表達式),不能是常量(或運算結(jié)論是數(shù)值的表達式).

例似:5++、(a+2)++不合法.

具有右結(jié)合性,結(jié)合方向為從右到左.

例似:–a++等價于

介入有多個運算符接連展示時,C系統(tǒng)盡情很-(a++)多的從左到右將字符組合成一個運算符

例似:i+++j等價于(i++)+j

-i+++-j等價于-(i++)+(-j)2022/3/3138講明(續(xù)):

對函數(shù)指標(biāo)的求值次序:

TurboC系統(tǒng)先統(tǒng)計最右邊的指標(biāo)值,再依次統(tǒng)計左面的指標(biāo)值.【例2,5】有多個函數(shù)指標(biāo)且為同一變量自增的運算操作.main()運行例2,5{inta=5;printf("%d%d\n",a,a++);}輸出結(jié)論:652022/3/3139講明(續(xù)):【例2,6】有多個函數(shù)指標(biāo)且為同一變量多次自增的運算操作.main(){inta=5;運行例2,6printf("%d%d\n",a,(a++)+(a++));}輸出結(jié)論:7112022/3/3140賦值運算

賦值運算符(右結(jié)合)

=+=-=*==%=

&=|=^=>>=<<=

賦值表達式

將表達式的值存入變量對應(yīng)的內(nèi)存單元中

m=12

b=(++a)-2

m%=3+n等價于m=m%(3+n)

x*=(x=5)2022/3/3141講明:

賦值號左邊必須是變量,右邊可所以C語言隨意任性合法的表達式

例似:n=t+2<s合法

賦值運算符僅優(yōu)先于“,”,且具有右結(jié)a+b=15不合法合性

例似:

等價于:a=(b=((b*c)>10))

賦值號與數(shù)學(xué)中的等號含義差不

例似:數(shù)學(xué)中a=b=b*c>10a=b等價于b=a

C語言中a=b不等價于b=a2022/3/3142關(guān)系運算

關(guān)系運算符(左結(jié)合)

>>=<<===!=

關(guān)系表達式

用關(guān)系運算符將運算對象毗連成的式子

例似:12<'C'+1(字符型信息對比ASCII值)較高較低

a==b>=c等價于a==(b>=c)

關(guān)系運算符優(yōu)先于賦值,低于算術(shù)與(a==b)>=c不等價2022/3/3143講明:

關(guān)系運算的結(jié)論該當(dāng)是邏輯值.C語言用數(shù)值用1示意邏輯真,0示意邏輯假

例似:7>5的值是1,5>7的值是0

即關(guān)系表達式的值:0或1

實型數(shù)可履行大于或小于對比,但同樣不'a'>'b'的值是0,'a'<'b'的值是1履行==或!=的關(guān)系運算2022/3/3144邏輯運算符

邏輯運算符

&&||!

邏輯運算符的運算法那么運算對象邏輯運算結(jié)論aba&&ba||b!a非0非0非0100011100011000非002022/3/3145邏輯表達式

邏輯表達式

用邏輯運算符將運算對象毗連成的式子

例似:0&&'b'

邏輯運算符的優(yōu)先級和結(jié)合性:

!是單目運算符,右結(jié)合,高于算術(shù)

&&和||是雙目運算符,左結(jié)合,高于a&&b||c&&da||b-5||c4!x+y>=z賦值運算符,低于關(guān)系運算符2022/3/3146邏輯運算法那么

從左到右依次履行邏輯統(tǒng)計

運算對象為非0示意邏輯真

運算對象為0示意邏輯假

邏輯運算的結(jié)論為0或1

例似設(shè):a=15,b=0,c=-2

a&&b&&c結(jié)論為0

a||b||c結(jié)論為1

(a+c)||b&&c結(jié)2022/3/31論為147邏輯運算法那么(續(xù))

運算依照從左至右的次序履行,一旦可以肯定邏輯表達式的值,就急速終了運算

——邏輯運算的短路性質(zhì)

例似設(shè):a=1,b=0,c=-2

a&&b&&c為0,運算停止,表達式值為(a++)||++b&&0--c為非0,運算停止,表達式值為1且a為2,b為0,c為-2(b,c連結(jié)原值)2022/3/3148關(guān)系與邏輯運算符的使用

示意數(shù)學(xué)程式a>b>ca>b&&b>c

判斷a,b,c三條線段可否構(gòu)成一個三角形a+b>c&&a+c>b&&b+c>a

aa>=0||b>=0,b差不時為負!(a<0&&b<0)(a<0&&b>=0)||(a>=0&&b<0)||(a>=0&&b>=0)2022/3/3149位運算符~&^|<<>>單目位邏輯運算符移位運算符低于單目、算術(shù)和關(guān)系運算符,高于其他運算符低于單目、算術(shù)運算符,高于其他運算符

位運算符的運算對象只能是整型信息或字符型信息,不能是實型信息

運算對象一概按二進制補碼介入運算,同時按位履行運算

位運算的結(jié)論是一個整型信息2022/3/3150位邏輯運算符的運算法那么

假定ai和bi均是一個二進制位(bit)運算對象邏輯運算結(jié)論aibiai&bai|biai?aii^bi001101010001011101101100例似:假定a=10,b=010求a&b、a|b、a^b、?a2022/3/3151程序似下:main(){inta=10,b=010;運行jc2_b輸出結(jié)論:8102-11printf("%d%d\n",a&b,a|b);printf("%d%d\n",a^b,~a);}00000000000010100000000000001010&0000000000001000?00000000000010001111111111110101即:a&b的值是8即:?a的值是-112022/3/3152移位運算

例似:

a<<b

a+8>>b-1等價于(a+8)>>(b-1)例似:假定a=10,b=2,求a<<b、a+8>>b-1main()運行jc2_c{inta=10,b=2;printf("%d%d\n",a<<b,a+8>>b-1);}請自行解析輸出結(jié)論:運行結(jié)論4092022/3/3153前提表達式運算

前提運算符:?

前提表達式的同樣情勢:

例似:m<n?x:a+3表達式1?表達式2:表達式3

a++>=10&&b-->20?a:bx=3+a>5?100:200

C語言中獨一的三目運算符,要精確辨識用?和:分隔的表達式

波及前提運算符的優(yōu)先級與結(jié)合性2022/3/3154前提運算符優(yōu)先級

前提運算符優(yōu)先級高于賦值、逗號運算符,低于其他運算符

例似:

⑴m<n?x:a+3等價于:(m<n)?(x):(a+3)

⑵a++>=10&&b-->20?a:b等價于:(a++>=10&&b-->20)?a:b

⑶x=3+a>5?100:200等價于:x=((3+a>5)?100:200)2022/3/3155前提運算符的結(jié)合性

前提運算符具有右結(jié)合性

當(dāng)一個表達式中展示多個前提運算符時,該當(dāng)將位于最右邊的問號與離它近來的冒號配對,同時按這一原那么精確辨識各前提運算符的運算對象.例似:w<x?x+w:x<y?x:y與w<x?x+w:(x<y?x:y)等價與(w<x?x+w:x<y)?x:y不等價2022/3/

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論