程序設(shè)計基礎(chǔ)課件第2章(NXPowerLite)_第1頁
程序設(shè)計基礎(chǔ)課件第2章(NXPowerLite)_第2頁
程序設(shè)計基礎(chǔ)課件第2章(NXPowerLite)_第3頁
程序設(shè)計基礎(chǔ)課件第2章(NXPowerLite)_第4頁
程序設(shè)計基礎(chǔ)課件第2章(NXPowerLite)_第5頁
已閱讀5頁,還剩86頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章C語言基礎(chǔ)北京科技大學信息學院C

語言程序設(shè)計1本章主要內(nèi)容本章介紹C語言基礎(chǔ),包括:C語言的字符集和標識符數(shù)據(jù)類型常量和變量運算符和表達式數(shù)據(jù)類型轉(zhuǎn)換C語言的語句類型均是程序設(shè)計的基礎(chǔ)知識2應(yīng)該建立的概念程序是用來處理數(shù)據(jù)的程序用計算機語言來描述計算機語言應(yīng)該具有表達數(shù)據(jù)、處理數(shù)據(jù)和程序控制的功能數(shù)據(jù)有類型,有常量變量通過運算符和表達式處理數(shù)據(jù)3C程序的符號系統(tǒng)主要內(nèi)容:基本字符標識符4基本字符大寫英文字母:ABC……XYZ

小寫英文字母:abc……xyz

數(shù)字:012……9

空白符:空格符、換行符、制表符

特殊字符:+-*/<>()[]{}_=!#%.,;:‘“|&?$^\~

5標識符

由字母、下劃線和數(shù)字組成的字符序列用于程序中的變量、符號常量、數(shù)組、函數(shù)、數(shù)據(jù)類型等操作對象的名字1.系統(tǒng)定義標識符具有固定名字和特定含義的標識符分為關(guān)鍵字和預定義標識符

2.用戶定義標識符

用于對用戶使用的變量、數(shù)組、函數(shù)等操作對象進行命名6關(guān)鍵字

數(shù)據(jù)類型:

int、char、float、double、short、long、void、signed、unsigned、enum、struct、union、const、typedef、volatile

存儲類別:auto、static、register、extern語句命令字:break、case、continue、default、do、else、for、goto、if、return、switch、while

運算符:sizeof

7預定義標識符系統(tǒng)標準庫函數(shù)scanf、printf、putchar、getchar、strcpy、strcmp、sqrt等編譯預備處理命令include、define等8對標識符的規(guī)定

用戶定義標識符必須以字母或下劃線“_”開頭不能含有除字母、數(shù)字和下劃線“_”外的其他字符標識符中大小寫字母含義不同關(guān)鍵字必須用小寫字母。不允許使用關(guān)鍵字為變量、數(shù)組、函數(shù)等操作對象命名預定義標識符允許用戶對它們重新定義,當重新定義后將改變它們原來的含義9正確區(qū)分標識符正確區(qū)分哪些是合法標識符,哪些是不合法標識符。其中合法標識符中哪些是關(guān)鍵字,哪些是預定義標識符,哪些是用戶定義標識符。Abcdefine2xdoublestudentm+ya#b-4_1Whileintletx%ynamedoπwtmCtrlswicthinclude10例如:【例2.1】計算圓的面積,半徑為5cm。

程序如下:voidmain(){float

r,area;

r=5;

area=3.14*r*r;

printf("%f\n",

area);}運算結(jié)果是輸出圓的面積:78.500000程序中用到的數(shù)據(jù):r、area、5、3.14對數(shù)據(jù)進行的運算:*、=11分析:計算機操作處理時,首先要解決數(shù)據(jù)的存放:事先要在內(nèi)存中給半徑r和運算結(jié)果area

開辟存儲空間,存放它們的值。應(yīng)該留多大的地方來存放它們的值?數(shù)據(jù)

5和3.14與r

、area

不同,它們是在編寫程序時就給出確定的值,在運算過程中不會改變。這樣的數(shù)計算機怎么處理?對整數(shù)5

和小數(shù)3.14,計算機存放時是否有區(qū)別?涉及數(shù)據(jù)類型的基本知識12C語言的數(shù)據(jù)類型C數(shù)據(jù)類型數(shù)組類型結(jié)構(gòu)體類型共用體類型枚舉類型整型字符型實型(浮點型)空類型單精度型雙精度型基本類型指針類型構(gòu)造類型本章討論基本類型數(shù)據(jù)132.1.1整型數(shù)據(jù)1.整型數(shù)據(jù)的類型基本整型數(shù)據(jù)int,分配4Byte短整型數(shù)據(jù)shortint,分配2Byte長整型數(shù)據(jù)longint,分配4Byte整型數(shù)據(jù)均以二進制補碼形式存儲問題:為什么要采用補碼?如何表示?14計算機中正、負數(shù)的表示例如:109=(1101101)2要區(qū)別:+109和-109方法是:將符號也數(shù)碼化即: 正的符號+用

0表示 負的符號-用

1表示∴計算機中的數(shù)表示方法是:

符號位+二進制數(shù)值(以8bit為例)

+109→+1101101→01101101

-109→-1101101→1110110115問題:計算機計算復雜化例如計算:

(-19)+(+22)10010011+00010110解決的方法是:使用反碼或補碼的表示方法(按前述表示的編碼稱為原碼),即能將減法一律轉(zhuǎn)換為加法。需要判斷符號是否相同:如果相同,結(jié)果符號不變,并進行絕對值相加如果不同,結(jié)果取絕對值大的數(shù)的符號,并進行絕對值相減16原碼、反碼和補碼正數(shù):原碼、反碼、補碼相同符號位為0,數(shù)值為對應(yīng)的二進制數(shù)。+109[01101101]原=[01101101]反=[01101101]補負數(shù):原碼符號位為1,數(shù)值為絕對值的二進制數(shù)。

-109 [11101101]原反碼符號位為1,數(shù)值為絕對值的二進制數(shù)各位變反。

-109 [10010010]反

補碼符號位為1,數(shù)值為絕對值的二進制數(shù)各位變反加1。-109 [10010011]補17整型數(shù)據(jù)類型(TurboC編譯環(huán)境)方括號表示可選項int

分配2Byte,long分配4Byte類型名稱類型符bit取值范圍整型(短整型)[signed]int

[signed]short[int]16215~215-1(-32768~32767)無符號整型unsigned[int]160~216-1(0~65535)長整型[signed]long[int]32-231~231-1無符號長整型unsignedlong[int]320~232-118說明1

:有符號和無符號整型數(shù)據(jù)有符號的整型數(shù)據(jù)signedint無符號的整型數(shù)據(jù)unsignedint區(qū)別是將最高位看作符號位還是數(shù)據(jù)位例如:

1111111110101000作為有符號數(shù)使用時,最高為符號位為負數(shù),值是:-88(再求一次補)作為無符號數(shù)使用時,最高為數(shù)據(jù)位為無符號的數(shù),值是:6544819例如:main(){unsignedintm;m=-1;

printf("\nm=%d\n",m);

printf("m=%u\n",m);}輸出結(jié)果:m=-1m=4294967295按有符號數(shù)輸出按無符號數(shù)輸出20說明2:整數(shù)溢出問題:超出范圍系統(tǒng)為short

型數(shù)分配的存儲空間為:

16bit(2Byte)=215-1=3276701111111111111111000000000000000=-215=-32768表示范圍:-32768~32767使用中注意數(shù)的范圍有符號int型整數(shù)的最大值有符號int型整數(shù)的最小值2122例如:voidmain(){shortinta,b;a=32767;b=a+1;

printf(“a=%d\nb=%d\n“,a,b);}輸出結(jié)果:a=b=32767-32768222.1.2實型數(shù)據(jù)1.實型數(shù)據(jù)的類型

單精度實型數(shù)據(jù)float,分配4Byte雙精度實型數(shù)據(jù)double,分配8

Byte2.實型數(shù)據(jù)的存儲

單精度實型指數(shù)部分小數(shù)部分

小數(shù)的符號位指數(shù)的符號位23實型數(shù)據(jù)的類型及規(guī)定C標準并未具體規(guī)定各種實型數(shù)據(jù)所占字節(jié)數(shù),也不規(guī)定具體小數(shù)和指數(shù)部分的位數(shù)。一般而言,小數(shù)部分位數(shù)多,數(shù)據(jù)表示的有效數(shù)字多,精度就高;而指數(shù)部分位數(shù)多,則表示的數(shù)據(jù)范圍更大。有效數(shù)字的意義?類型類型符Byte取值范圍有效數(shù)字單精度型float4-3.4*1038~3.4*10387~8

位雙精度型double8-1.7*10308~1.7*1030815~16位2425例如:voidmain(){floatx=12345.54321;doubley=445566778899.987654321;

printf(“x=%f\ny=%f\n“,a,b);}輸出結(jié)果:x=y=有效數(shù)字的具體含義12345.542969445566778899.987670252.1.3字符型數(shù)據(jù)字符型數(shù)據(jù)char,分配1Byte

字符型數(shù)據(jù)是指字母、數(shù)字、各種符號等用ASCII值表示的字符例如'a'是一個char類型數(shù)據(jù),稱作字符常量,存儲:011000012.1.4空類型空類型void通常與指針或函數(shù)結(jié)合使用26練習題下面標識符中不合法的用戶標識符是____A、floatB、_123C、SunD、XYZ27練習題數(shù)據(jù)類型數(shù)據(jù)長度intshortlongcharfloatdouble42414828常量、變量與標準函數(shù)主要內(nèi)容:常量變量標準庫函數(shù)29常量在運行程序的過程中值保持不變的量1.整型常量十進制:0~9八進制:0~7,以0開頭十六進制:0~9,A~F/a~f,以0x或0X開頭例如:100-80+12301002401000730x380x100X100XFF0x0a301.整型常量整型常量的類型:根據(jù)值大小默認類型。整型常量后面加l或L,則認為是longint型例如:123L、0L、432l、0x100l注意:十六進制常量中可以使用大寫字母A~F,也可以使用小寫字母a~f。八進制常量中不能出現(xiàn)數(shù)字8或9例如:018、0921非法312.實型常量十進制形式

1.01.+12.0-12.00.0指數(shù)形式

1e31.8e-3-123E-6-.1E-3等價于:1×1031.8×10-3

-123×10-6

-0.1×10-3指數(shù)只能是整數(shù),而尾數(shù)則可以是整數(shù)也可以是小數(shù),無論指數(shù)或尾數(shù)均不能省略例如:1e、E.5、E-3

非法實型常量的類型:默認為double型,后面加F(或f),則強調(diào)表示該數(shù)是float類型例如:3.5f、1e2F

323.字符型常量可視字符常量

單引號括起來的單個可視字符例如:'a'、'A'、'+'、'3'、''等

轉(zhuǎn)義字符常量(表2-2)單引號括起來的\與可視字符組合,例如:\0字符串結(jié)束標志\n回車換行\(zhòng)t跳到下一個輸出位置\"雙引號字符\dddddd為1到3位八進制數(shù)所代表的字符\xhhhh為1到2位十六進制數(shù)所代表的字符334.字符串常量用雙引號括起的一個字符序列例如:"ABC"、"123"、"a"、"\n\t""\nGoodmorning"字符串常量的長度:所包含的字符個數(shù)

字符串常量的存儲方式:

\nGoodmorning\0a\0所占存儲單元數(shù):串長度+1例如:字符串結(jié)束標記3435說明字符串常量與字符常量字符串字符標志""''長度多個字符單個字符內(nèi)存字符個數(shù)+11個字節(jié)變量無字符串變量有字符變量轉(zhuǎn)義字符支持,特別\"支持,特別\'355.符號常量以標識符來代表的常量事先編譯預處理命令define定義編譯時先由系統(tǒng)替換為它所代表的常量,再進行編譯例如:

#defineLEN

2.5main(){floata,b;a=2*3.14*LEN;b=3.14*LEN*LEN;

printf("a=%f,b=%f\n",a,b);}定義符號常量使用符號常量編譯前系統(tǒng)進行替換365.符號常量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是編譯預處理命令,必須以“#”開頭編譯預處理命令在第7章討論。替換為37變量1.變量的有關(guān)概念在程序運行過程中,其值改變的數(shù)據(jù),稱為變量,變量用標識符表示,稱為變量名。變量必須“先定義后使用”系統(tǒng)為變量分配存儲單元,存儲變量的值。編寫程序時通過變量名來存、取變量值。a510變量值為變量分配的存儲單元變量名例如:int

a;a=510;382.變量定義變量定義的一般格式:

數(shù)據(jù)類型說明符變量列表;例如:inti,j;

longk,m;floatx,y;charch1,ch2;必須使用合法的標識符作變量名不能使用關(guān)鍵字為變量命名393.變量的初始化:

允許在說明變量的時候?qū)ψ兞抠x初值。例如:inta=5,b=10+2;

doublex=23.568,y;charch1='a',ch2=66,ch3='\142';表示定義變量并對變量存儲單元賦值。錯誤的初始化:

inta=3+b,b=5;

floatm=n=23.16;

修改后就對了:floatn,m=n=23.16;40標準庫函數(shù)由C編譯系統(tǒng)定義的一種函數(shù),存放在系統(tǒng)函數(shù)庫中,用戶可以根據(jù)需要隨時調(diào)用常用函數(shù)如:printf、scanf、fabs、sqrt、sin、(常用數(shù)學函數(shù)參見教材

P100表4-1)函數(shù)調(diào)用形式:函數(shù)名([參數(shù)表])例如:putchar('a')

sqrt(x)41運算符和表達式主要內(nèi)容:算術(shù)運算符和算術(shù)表達式賦值運算符和賦值表達式關(guān)系運算符和關(guān)系表達式邏輯運算符和邏輯表達式位運算符和位運算表達式條件運算符和條件表達式逗號運算符和逗號表達式其他運算符及其運算42運算符的有關(guān)概念作用:對運算對象完成規(guī)定的操作運算類型:按運算對象分:單目、雙目、三目按功能分:算術(shù)、賦值、關(guān)系、邏輯條件、逗號、位、其他43運算符的優(yōu)先級和結(jié)合性優(yōu)先級指各種運算符號的運算優(yōu)先順序例如:算術(shù)運算優(yōu)先于關(guān)系運算算術(shù)運算中先*/后+-結(jié)合性指運算符號和運算對象的結(jié)合方向分為:從左向右(左結(jié)合)和從右向左(右結(jié)合)例如:算術(shù)運算符為左結(jié)合

a-b+4

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

a=b=5(C語言規(guī)定見教材P280附錄A)44本章涉及的運算符+-*/%++--+-=+=-=*=/=%=&=|=^=>>=<<=

><>=<===!=&&||!&|^~<<>>?:,&sizeof(數(shù)據(jù)類型標識符)類型種類算術(shù)運算符賦值運算符關(guān)系運算符邏輯運算符位運算符條件運算符逗號運算符其他運算符4546表達式的有關(guān)概念什么是表達式由運算符將運算對象連接成的式子,它描述了一個具體的求值運算過程計算表達式的值按照運算符的運算規(guī)則求值求值時注意運算符的優(yōu)先級和結(jié)合性表達式值的類型自動轉(zhuǎn)換強制轉(zhuǎn)換47例如:表達式: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+648算術(shù)運算算術(shù)運算符的優(yōu)先級

()+-++--

*/%

+-

同級同級同級

單目雙目

低沒有乘方運算符,要計算a3要寫作a*a*a的連乘,或用標準庫函數(shù)pow(a,3)“/”的運算對象可為各種類型數(shù)據(jù),但是當進行兩個整型數(shù)據(jù)相除時,運算結(jié)果也是整型數(shù)據(jù)“%”要求運算對象必須是整型數(shù)據(jù),功能是求兩數(shù)相除的余數(shù),余數(shù)的符號與被除數(shù)的符號相同。例如:5/2=25%2=149編程練習編程將華氏溫度轉(zhuǎn)換成攝氏溫度。換算公式:c=5/9(f-32),其中c為攝氏溫度,f為華氏溫度。floatc,f;

f=100;

c=(float)5/9(f-32);50自增自減運算++--是單目運算符有前綴和后綴兩種形式

前綴形式:先自增(自減)再引用;后綴形式:先引用再自增(自減);功能:前綴形式++a

等價于

a=a+1

--a

等價于

a=a–1

后綴形式a++

等價于a=a+1

a--

等價于a=a–1表達式的值會不同51例如:當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=5

52說明:++和--的運算對象只能是變量(或運算結(jié)果是變量的表達式),不能是常量(或運算結(jié)果是數(shù)值的表達式)。

例如:

5++、(a+2)++

不合法。具有右結(jié)合性,結(jié)合方向為從右到左。例如:

–a++

等價于-(a++)

如果有多個運算符連續(xù)出現(xiàn)時,C系統(tǒng)盡可能多的從左到右將字符組合成一個運算符例如:

i+++j

等價于(i++)+j

-i+++-j

等價于-(i++)+(-j)

53main(){inta=5;

printf("%d%d\n",a,a++);}說明(續(xù)):對函數(shù)參數(shù)的求值順序:

TurboC系統(tǒng)先計算最右邊的參數(shù)值,再依次計算左面的參數(shù)值?!纠?.5】有多個函數(shù)參數(shù)且為同一變量自增的運算處理。

輸出結(jié)果:6554說明(續(xù)):【例2.6】有多個函數(shù)參數(shù)且為同一變量多次自增的運算處理。

main(){inta=5;

printf("%d%d\n",a,(a++)+(a++));}輸出結(jié)果:71155賦值運算賦值運算符(右結(jié)合)

=+=-=*=/=%=&=|=^=>>=<<=賦值表達式將表達式的值存入變量對應(yīng)的內(nèi)存單元中m=12b=(++a)-2m%=3+n等價于

m=m%(3+n)x*=(x=5)56說明:賦值號左邊必須是變量,右邊可以是C語言任意合法的表達式例如:n=t+2<s合法

a+b=15

不合法賦值運算符僅優(yōu)先于“,”,且具有右結(jié)合性例如:

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

(b*c)>10)

)賦值號與數(shù)學中的等號含義不同例如:數(shù)學中a=b

等價于b=aC語言中a=b不等價于b=a賦值表達式的值:就是左邊變量的值57關(guān)系運算關(guān)系運算符(左結(jié)合)

>>=<<=

==!=較高較低關(guān)系表達式用關(guān)系運算符將運算對象連接成的式子例如:12<'C'+1(字符型數(shù)據(jù)比較ASCII值)a==b>=c等價于a==(b>=c)

與(a==b)>=c不等價關(guān)系運算符優(yōu)先于賦值,低于算術(shù)58說明:關(guān)系運算的結(jié)果應(yīng)該是邏輯值。C語言用數(shù)值1表示邏輯真,0表示邏輯假例如:7>5的值是1,5>7的值是0

'a'>'b'的值是0,'a'<'b'

的值是1即關(guān)系表達式的值:0或1實型數(shù)可進行大于或小于比較,但通常不進行==或!=的關(guān)系運算59例#include<stdio.h>voidmain(){floata=0.1,b=0.0;inti;

for(i=0;i<10;i++)

b=b+0.01;

printf

("b=%f\n",

b);

if(a==b)printf

("相等\n");

elseprintf

("不相等\n");}60#include<stdio.h>#include<math.h>voidmain(){floata=0.1,b=0.0;inti;for(i=0;i<10;i++)b=b+0.01;

printf("b=%f\n",b);

if(fabs(a-b)<1e-6)printf("相等\n");

elseprintf("不相等\n");}61邏輯運算符邏輯運算符&&||!邏輯運算符的運算規(guī)則運算對象邏輯運算結(jié)果aba&&ba||b!a非0非0110非000100非00110000162邏輯表達式邏輯表達式用邏輯運算符將運算對象連接成的式子例如:0&&'b'a&&b||c&&da||b-5||c/4!x+y>=z邏輯運算符的優(yōu)先級和結(jié)合性:!是單目運算符,右結(jié)合,高于算術(shù)&&和||是雙目運算符,左結(jié)合,高于賦值運算符,低于關(guān)系運算符63邏輯運算規(guī)則從左到右依次進行邏輯計算運算對象為非0表示邏輯真運算對象為0表示邏輯假邏輯運算的結(jié)果為0或1例如設(shè):a=15,b=0,c=-2a&&b&&c結(jié)果為0a||b||c結(jié)果為1(a+c)||b&&c結(jié)果為164邏輯運算規(guī)則(續(xù))運算按照從左至右的順序進行,一旦能夠確定邏輯表達式的值,就立即結(jié)束運算——邏輯運算的短路性質(zhì)例如設(shè):a=1,b=0,c=-2a&&b&&c(a++)||++b&&--c為0,運算終止,表達式值為0為非0,運算終止,表達式值為1且a為2,b為0,c為-2(b,c保持原值)65關(guān)系與邏輯運算的應(yīng)用表示數(shù)學公式a>b>c判斷a,b,c三條線段能否組成一個三角形

a,b不同時為負

a+b>c&&a+c>b&&b+c>aa>=0||b>=0!(a<0&&b<0)(a<0&&b>=0)||(a>=0&&b<0)||(a>=0&&b>=0)a>b&&b>c66判斷閏年#include<stdio.h>voidmain(){intyear,leap;scanf("%d",&year);

if((year%4==0&&year%100!=0)||(year%400==0))

printf

("%disaleapyear.\n",

year);else

printf

("%disaleapyear.\n",

year);}67位運算有興趣自學不要求68條件表達式運算條件運算符:?:條件表達式的一般形式表達式1?表達式2:表達式3例如:m<n?x:a+3a++>=10&&b-->20?a:bx=3+a>5?100:200C語言中唯一的三目運算符,要正確區(qū)分用?和:分隔的表達式涉及條件運算符的優(yōu)先級與結(jié)合性69條件運算符優(yōu)先級條件運算符優(yōu)先級高于賦值、逗號運算符,低于其他運算符例如:⑴m<n?x:a+3⑵a++>=10&&b-->20?a:b⑶x=3+a>5?100:200等價于:(m<n)?(x):(a+3)等價于:(a++>=10&&b-->20)

?a:b等價于:x=

((3+a>5)

?100:200)70條件運算符的結(jié)合性

條件運算符具有右結(jié)合性當一個表達式中出現(xiàn)多個條件運算符時,應(yīng)該將位于最右邊的問號與離它最近的冒號配對,并按這一原則正確區(qū)分各條件運算符的運算對象。例如:w<x?x+w:x<y?x:y

與w<x?x+w:(x<y?x:y)等價

與(w<x?x+w:x<y)?x:y不等價71逗號表達式運算逗號表達式的一般形式

表達式1,表達式2,……,表達式n

逗號表達式的值從左向右,依次對表達式求值,最后得到表達式n

的值就是逗號表達式的值例如:⑴a=5,

a++,

a*3

表達式值為18,且a=6⑵t=1,t+5,t++表達式值為1,且t=2⑶x=(a=3*5,

a*4

)

賦值表達式的值為60,且x=60,a=1572取地址運算符&為單目運算符運算對象只能是變量運算結(jié)果是變量的存儲地址例如有定義:inta,student;charch;可以對變量a、ch、student

進行&運算:&a&ch

&student73長度運算符sizeof為單目運算符運算對象只能是變量名或數(shù)據(jù)類型標識符

運算結(jié)果為該變量或該數(shù)據(jù)類型的長度main(){inta=5;doublex;

printf("%d%d",sizeof(int),sizeof(a));

printf("%d%d",sizeof(double),sizeof(x));

printf("%d%d\n",sizeof(float),sizeof(char));}輸出結(jié)果:4488

4

1742.5運算中數(shù)據(jù)類型的轉(zhuǎn)換在C語言中,不同類型的數(shù)據(jù)可以進行混合運算。如:

25+48.5*'A'-3.5e+3但這些數(shù)據(jù)首先要轉(zhuǎn)換成相同類型,然后再進行運算數(shù)據(jù)類型轉(zhuǎn)換包括自動轉(zhuǎn)換和強制轉(zhuǎn)換自動轉(zhuǎn)換由C語言編譯系統(tǒng)自動完成,強制轉(zhuǎn)換則通過特定的運算完成752.5運算中數(shù)據(jù)類型的轉(zhuǎn)換2.5.1數(shù)據(jù)類型的自動轉(zhuǎn)換轉(zhuǎn)換原則:

自動將精度低、表示范圍小的運算對象類型向精度高、表示范圍大的運算對象類型轉(zhuǎn)換char,shortdoublelongfloatunsignedint高精度低精度例如有定義:inta;char

ch;floatx,y;表達式:a-ch*2+35La-ch*2+35.0x+y水平方向的轉(zhuǎn)換是一定要進行的,如果類型還不一致再進行垂直方向的轉(zhuǎn)換76賦值運算中的類型轉(zhuǎn)換<實型變量>=<整型表達式>小數(shù)部分自動補0<整型變量>=<實型表達式>自動舍去實型表達式的小數(shù)部分(注意不進行四舍五入)

<字符變量>=<整型表達式><整型變量>=<長整型表達式>自動截取表達式值的低字節(jié)賦值,舍去高字節(jié)<整型變量>=<字符數(shù)據(jù)><長整型變量>=<整型表達式>自動給高字節(jié)補0或補1772.5.2數(shù)據(jù)類型的強制轉(zhuǎn)換強制轉(zhuǎn)換的一般形式(類型名)表達式例如:(int)('b'+3*x)%3

1/(float)a+6注意:(float)

22/5與(float)

(22/5)

不同錯誤的類型轉(zhuǎn)換:(int)b=a+5b=int

(3*a)78強制類型轉(zhuǎn)換運算符是單目運算符,其運算對象是緊隨其后的操作數(shù),如果要對整個表達式的值進行類型轉(zhuǎn)換,必須給表達式加圓括號強制類型轉(zhuǎn)換時,類型名一定要用圓括號括起來,否則就是非法的表示形式無論是自動還是強制類型轉(zhuǎn)換,都只是為了本次運算的需要,對數(shù)據(jù)的類型進行的臨時性轉(zhuǎn)換,而不改變變量原來的類型79例2-12強制類型轉(zhuǎn)換#include<stdio.h>voidmain(){intn=25;floatf=46.5;printf("(float)n=%f\n",(float)n);printf("(int)f=%d\n",(int)f);printf("n=%d,f=%f\n",n,f);}運行結(jié)果:可以看出,仍為其原來的類型。802.6C語言的語句類型主要內(nèi)容:說明性語句表達式語句控制語句復合語句81說明性語句對程序中使用的變量、數(shù)組、函數(shù)等操作對象進行定義、聲明的描述語句只起說明作用,不產(chǎn)生可執(zhí)行的機器指令代碼。

例如:inta,b;

floatfunction(int,int);C程序由函數(shù)組成。函數(shù)的格式:函數(shù)名(參數(shù)表){

說明部分;執(zhí)行部分;}數(shù)據(jù)類型說明語句可執(zhí)行語句82表達式后面加一個分號,構(gòu)成表達式語句x=3;y=y+5;x=a-b&&c||d;printf("x=%d,y=%d\n",x,y);sort(a,10);表達式語句賦值語句函數(shù)調(diào)用語句注意:①分號是語句必不可少的一部分②單獨的一個分號“;”構(gòu)成一個空語句例如:;(空語句,是最簡單的C語句)83控制語句1.選擇控制語句

if()…else…

switch(){…} 2.循環(huán)控制語句

for()…

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論