版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計(jì)V71C語言概述2數(shù)據(jù)類型、表達(dá)式及其運(yùn)算3順序結(jié)構(gòu)程序設(shè)計(jì)4選擇結(jié)構(gòu)程序設(shè)計(jì)5循環(huán)結(jié)構(gòu)程序設(shè)計(jì)目錄6數(shù)組和指向數(shù)組的指針7函數(shù)與指針8結(jié)構(gòu)體與共用體9文件10C語言屏幕操作操作函數(shù)及應(yīng)用C語言概述第1章本章要點(diǎn)C語言的發(fā)展與特點(diǎn)C語言的基本符號(hào)和關(guān)鍵字C語言程序結(jié)構(gòu)及特點(diǎn)C語言程序編輯、編譯與運(yùn)行1.1C語言的發(fā)展與特點(diǎn)第1章
1.概述
C語言是目前世界上最為流行的計(jì)算機(jī)高級(jí)程序設(shè)計(jì)語言之一。它設(shè)計(jì)精巧,功能齊全,既適合于編寫應(yīng)用軟件,又特別適合于編寫系統(tǒng)軟件。
C語言不僅有易學(xué)易用的優(yōu)點(diǎn),而且具有面向過程、結(jié)構(gòu)化、通用性強(qiáng)、可移植性強(qiáng)及集成開發(fā)環(huán)境先進(jìn)等特點(diǎn)。而且,C語言具有很強(qiáng)的繪圖能力,數(shù)據(jù)處理能力,同樣適合于二維、三維圖形和動(dòng)畫的開發(fā)。1.1.1C語言的發(fā)展1.1C語言的發(fā)展與特點(diǎn)第1章2.C語言的發(fā)展早期的計(jì)算機(jī),都是用機(jī)器語言和匯編語言來編寫程序代碼。到了第二代計(jì)算機(jī)才有了高級(jí)語言。
1960年開發(fā)的ALGOL-60,對(duì)其后的高級(jí)語言的發(fā)展,起到了很好的推進(jìn)作用。但是,它是一種面向問題的語言,過于抽象,難以描述系統(tǒng)。因此,沒有得到真正的推廣。
1972年~1973年間,貝爾實(shí)驗(yàn)室的D.M.Ritchie,在BCPL語言的基礎(chǔ)上設(shè)計(jì)出了C語言。
1973年K.Thompson和D.M.Ritchie兩人合作,把原來由兩人用匯編語言編寫的UNIX操作系統(tǒng)中90%以上的代碼,用C語言來重寫,即UNIX5。后來,C語言雖作了多次改進(jìn),但主要還是用在貝爾實(shí)驗(yàn)室內(nèi)部。直到1975年,用C語言寫的UNIX6公布后,才引起業(yè)內(nèi)人士的廣泛關(guān)注。1.1.1C語言的發(fā)展1.1C語言的發(fā)展與特點(diǎn)第1章2.C語言的發(fā)展
1978年BrianW.Kernighan和DennisM.Ritchie(合稱K&R)合著了影響深遠(yuǎn)的著作《TheCProgrammingLanguage》一書。該書中介紹的C語言被稱為標(biāo)準(zhǔn)C。
1983年,美國國際標(biāo)準(zhǔn)化協(xié)會(huì)(ANSl),在參考C語言的各種版本基礎(chǔ)上,制定了新的標(biāo)準(zhǔn),稱為ANSIC。
1988年,K&R按照ANSIC標(biāo)準(zhǔn)重寫了《TheCProgrammingLanguage》。1990年,國際標(biāo)準(zhǔn)化組織ISO(InternationalStandardOrganization),接受了以87ANSIC為ISOC的標(biāo)準(zhǔn)。目前流行的C編譯系統(tǒng),都是以它為基礎(chǔ)的。高級(jí)語言發(fā)展至今,面向?qū)ο蟮某绦蛟O(shè)計(jì)方法越來越受到人們的青睞。1.1.1C語言的發(fā)展1.1C語言的發(fā)展與特點(diǎn)第1章1.1.2C語言的特點(diǎn)(1)語言簡潔、靈活。(2)數(shù)據(jù)類型豐富,涉及面廣。(3)運(yùn)算符多樣,表達(dá)能力強(qiáng)。(4)函數(shù)是程序的主體。(5)C語言允許直接訪問物理地址。(6)生成的目標(biāo)代碼質(zhì)量高。(7)可移植性好。1.2C語言的基本符號(hào)與關(guān)鍵字第1章
字符集是構(gòu)成C語言的基本元素。用C語言編寫程序時(shí),所寫的語句是由字符集中的字符構(gòu)成。C語言的字符集由下列字符構(gòu)成:1.2.1基本符號(hào)集(1)英文字母:A~Z,a~z。(2)數(shù)字字符:0~9。(3)特殊符號(hào):空格!%*&∧_(下劃線)+=-~<>/\′″;.,()[]{}1.2C語言的基本符號(hào)與關(guān)鍵字第1章
關(guān)鍵字是具有特定含義的、專門用來說明C語言的特定成分的一類單詞、單詞縮寫或單詞組合。C語言的關(guān)鍵字都是用小寫字母來書寫。以下列出C語言的關(guān)鍵字:1.2.2關(guān)鍵字
autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile1.2C語言的基本符號(hào)與關(guān)鍵字第1章
C語言中標(biāo)識(shí)符(名字)是用來標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類型名等程序?qū)ο蟮挠行ё址蛄小語言對(duì)標(biāo)識(shí)符有如下規(guī)定:1.2.3標(biāo)識(shí)符
(1)標(biāo)識(shí)符只能由英文字母(A~Z,a~z)、數(shù)字(0~9)和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。
例如:正確的標(biāo)識(shí)符:abc,a1,prog_to,file_2,ab2c3。不正確的標(biāo)識(shí)符:2from,yesno/。1.2C語言的基本符號(hào)與關(guān)鍵字第1章
C語言中標(biāo)識(shí)符(名字)是用來標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類型名等程序?qū)ο蟮挠行ё址蛄?。C語言對(duì)標(biāo)識(shí)符有如下規(guī)定:1.2.3標(biāo)識(shí)符
(2)大小寫字符代表不同的標(biāo)識(shí)符。例如:標(biāo)識(shí)符abc與標(biāo)識(shí)符ABC是兩個(gè)不同的標(biāo)識(shí)符。一般對(duì)變量命名用小寫,符號(hào)常量命名用大寫。
(3)每個(gè)標(biāo)識(shí)符由1-8個(gè)字符組成。如果標(biāo)識(shí)符超過8個(gè)長度,只有前8個(gè)標(biāo)識(shí)符為有效標(biāo)識(shí)符。
例如:employee1和employee2,就會(huì)被認(rèn)為是相同的標(biāo)識(shí)符employee。1.2C語言的基本符號(hào)與關(guān)鍵字第1章
計(jì)算機(jī)中,所有的信息都用二進(jìn)制代碼表示。二進(jìn)制編碼的方式較多,應(yīng)用最為廣泛的是ASCII碼。我們使用的字符在計(jì)算機(jī)中就是以ASCII碼方式存儲(chǔ)的。ASCII碼是美國標(biāo)準(zhǔn)信息交換碼(AmericanStandardCodeforInformationInterchange,縮寫為ASCII)。它被國際標(biāo)準(zhǔn)化組織(ISO)認(rèn)定為國際標(biāo)準(zhǔn),詳見附錄Ⅰ。1.2.4ASCII字符集1.3C語言程序第1章
(1)程序所謂“程序”,即從事某一件事情的具體步驟。現(xiàn)實(shí)生活中,我們每個(gè)人其實(shí)都在無意識(shí)的情況下,編寫著不同的“程序”。例如:我們?nèi)ャy行取錢,就會(huì)有以下的操作步驟:1.3.1程序與C語言程序結(jié)構(gòu)第一步第二步第三步拿卡或存折去某一個(gè)銀行第四步第五步在銀行排隊(duì)等候;
排隊(duì)輪到后,把卡或存折交由銀行工作人員進(jìn)行取錢操作處理完后,銀行工作人員將卡或存折以及現(xiàn)金返回給我們將卡或存折以及現(xiàn)金收放好后離開銀行。
1.3C語言程序第1章
(2)C語言程序結(jié)構(gòu)通過以下幾個(gè)例題,讓我們對(duì)C語言的程序結(jié)構(gòu)及執(zhí)行過程有個(gè)全面的了解。程序語句不要求完全能理解,只是先對(duì)C程序的全貌有一個(gè)感性認(rèn)識(shí),為以后的學(xué)習(xí)打下基礎(chǔ)。1.3.1程序與C語言程序結(jié)構(gòu)【例1.1】在計(jì)算機(jī)屏幕上輸出信息。/*程序名稱:simple.c*/#include<stdio.h>/*文件包含*/main()/*程序從函數(shù)main開始執(zhí)行*/{printf(″IamaCprogrammer,IlikeC!″);/*在屏幕上輸出引號(hào)內(nèi)的信息*/}/*函數(shù)main結(jié)束*/1.3C語言程序第1章1.3.1程序與C語言程序結(jié)構(gòu)【例1.2】求兩數(shù)之和。#include<stdio.h>/*包含文件*/main()/*定義主函數(shù)*/{inta,b,sum;/*定義局部變量a,b,sum*/scanf(”%d,%d”,&a,&b);/*輸入2個(gè)整數(shù),存入變量a和b中*/sum=a+b;/*將a,b的和送入sum*/printf(“sum=%d\n”,sum);/*%d表示數(shù)據(jù)按十進(jìn)制整型數(shù)輸出結(jié)果*/}
程序運(yùn)行:輸入10,20↙(回車鍵)
結(jié)果:Sum=301.3C語言程序第1章
(2)C語言程序結(jié)構(gòu)(1)一個(gè)C程序可以有多個(gè)函數(shù),但只能有一個(gè)名為main的主函數(shù)。(2)主函數(shù)或子函數(shù)的函數(shù)體,必須用一對(duì)花括號(hào)“{}”擴(kuò)起來。(3)每條語句的最后必須有一個(gè)分號(hào)“;”。(4)大小寫表示不同的含義,程序語句一般用小寫字母書寫,大寫一般用作符號(hào)常量。(5)注釋語句“/**/”是非執(zhí)行語句,可以放在程序的任意位置。(6)C語言中使用的所有變量都必須先定義為某種數(shù)據(jù)類型,然后才能使用。(7)#include命令是編譯預(yù)處理命令。其作用是將由雙引號(hào)或尖括號(hào)括起來的文件中的內(nèi)容,讀入到該語句位置處。1.3.2C語言程序結(jié)構(gòu)的特點(diǎn)1.4C語言程序開發(fā)工具介紹第1章
1.TurboC集成編程環(huán)境開發(fā)一個(gè)C語言程序的基本步驟,可用圖1-1描述。C源程序經(jīng)過編輯、編譯、鏈接生成EXE文件,然后在計(jì)算機(jī)上執(zhí)行。無論哪個(gè)階段有錯(cuò)誤,都要回到編輯狀態(tài)修改源程序。修改后再編譯、鏈接、運(yùn)行。1.4.1TurboC2.0集成環(huán)境與程序的上機(jī)操作1.4C語言程序開發(fā)工具介紹第1章
(1)TurboC的界面操作1.4.1TurboC2.0集成環(huán)境與程序的上機(jī)操作1.4C語言程序開發(fā)工具介紹第1章
(2)源程序編輯按【ALT十E】進(jìn)入編輯狀態(tài),首行提示正在進(jìn)行編輯操作的信息:
LineColInsertIndentTabFillUnindent顯示當(dāng)前文件的盤符和文件名1.4.1TurboC2.0集成環(huán)境與程序的上機(jī)操作Home/End光標(biāo)移到行首/尾Crtl十N插入一行Crtl十Y刪除當(dāng)前行Ctrl+K+B定義塊首Ctrl+K+K定義塊尾Ctrl+K+V移動(dòng)塊到光標(biāo)處Ctrl+K+C復(fù)制塊到光標(biāo)處Ctrl+K+Y刪除塊Ctrl+K+H取消塊標(biāo)記表1-1塊操作1.4C語言程序開發(fā)工具介紹第1章
2.上機(jī)操作與查錯(cuò)
(1)啟動(dòng)TC如果TurboC2.0系統(tǒng)安裝在C:\TC子目錄下,在C盤找到TC.EXE文件雙擊,即可進(jìn)入TC環(huán)境。默認(rèn)情況下,編輯的源程序文件、編譯生成的目標(biāo)文件、連接生成的可執(zhí)行文件,都保存在TurboC2.0系統(tǒng)目錄下。為了系統(tǒng)的維護(hù)與安全,建議在上機(jī)時(shí)創(chuàng)建自己的工作目錄,每次上機(jī)時(shí)都進(jìn)入自己的工作目錄中操作。1.4.1TurboC2.0集成環(huán)境與程序的上機(jī)操作1.4C語言程序開發(fā)工具介紹第1章
2.上機(jī)操作與查錯(cuò)
(2)編輯源程序文件進(jìn)入TC集成開發(fā)環(huán)境后,系統(tǒng)默認(rèn)新建的文件名為“NONAME.C”。按【Ese】鍵后,在編輯窗口中出現(xiàn)閃爍的編輯光標(biāo),就可以輸入源程序的代碼。啟動(dòng)TC后,就會(huì)自動(dòng)打開一個(gè)已存在的源程序文件;或按【ALT+F】,選擇“New”后按回車,就可以新建一個(gè)源程序文件。(3)保存源程序文件按【ALT+F】后,選擇“writeto”,出現(xiàn)“命名”輸入框,將文件保存在自己的工作目錄中,輸入保存文件的盤符、路徑及文件名exp1,按回車。此時(shí),狀態(tài)欄右端的文件名已從NONAME.C變成了exp1.c。1.4.1TurboC2.0集成環(huán)境與程序的上機(jī)操作1.4C語言程序開發(fā)工具介紹第1章
2.上機(jī)操作與查錯(cuò)
(4)編譯源程序并生成可執(zhí)行文件
按Compile后選擇“Buildall”系統(tǒng)開始編譯源程序,逐行檢查語法錯(cuò)誤,并在編譯消息窗口報(bào)告編譯情況,編譯成功,則出現(xiàn)提示:SuccessPressanykey,按任意鍵關(guān)閉編譯消息窗口。編譯中出現(xiàn)錯(cuò)誤,則在消息窗口出現(xiàn)“Error:Pressanykey”提示,按任意鍵關(guān)閉編譯消息窗口后,在信息(Message)窗口顯示錯(cuò)誤信息。1.4.1TurboC2.0集成環(huán)境與程序的上機(jī)操作1.4C語言程序開發(fā)工具介紹第1章
2.上機(jī)操作與查錯(cuò)
(5)查錯(cuò)當(dāng)某行有語法錯(cuò)誤時(shí),系統(tǒng)會(huì)將該行白亮顯示,并用一個(gè)豎的線條指出錯(cuò)誤所在。這時(shí),可按【F6】鍵切換到編輯狀態(tài),根據(jù)語法規(guī)則和錯(cuò)誤提示進(jìn)行修改。圖1-6Run菜單(6)運(yùn)行程序在TC集成開發(fā)環(huán)境中運(yùn)行程序的方法是:直接按【CTRL十F9】(圖1-6run菜單),系統(tǒng)開始運(yùn)行文件。如果源程序尚未編譯連接,此操作會(huì)自動(dòng)編譯源程序,連接目標(biāo)程序生成可執(zhí)行文件,并自動(dòng)運(yùn)行該可執(zhí)行文件。1.4.1TurboC2.0集成環(huán)境與程序的上機(jī)操作1.4C語言程序開發(fā)工具介紹第1章
2.上機(jī)操作與查錯(cuò)
(7)查看結(jié)果
按【ALT+F5】,切換到用戶屏幕查看結(jié)果,顯示結(jié)果:sum=48,按任意鍵返回TC集成開發(fā)環(huán)境。
1.4.1TurboC2.0集成環(huán)境與程序的上機(jī)操作1.4C語言程序開發(fā)工具介紹第1章
1.安裝與啟動(dòng)VisualC++6.0運(yùn)行VisualStudio軟件中的setup.exe程序,選擇安裝VisualC++6.0,然后按照安裝程序的指示,完成安裝過程。安裝完成后,在開始菜單的程序選單中,可以看到MicrosoftVisualStudio6.0圖標(biāo)。選擇MicrosoftVisualC++6.0即可運(yùn)行。也可以在Window桌面建立一個(gè)快捷方式,雙擊即可進(jìn)入VisualC++6.0運(yùn)行環(huán)境。1.4.2VisualC++6.集成環(huán)境與C程序的上機(jī)操作1.4C語言程序開發(fā)工具介紹第1章
2.用VisualC++6.0建立并運(yùn)行C語言應(yīng)用程序的步驟⑴創(chuàng)建工程項(xiàng)目:1.4.2VisualC++6.集成環(huán)境與C程序的上機(jī)操作1.4C語言程序開發(fā)工具介紹第1章1.4.2VisualC++6.集成環(huán)境與C程序的上機(jī)操作1.4C語言程序開發(fā)工具介紹第1章1.4.2VisualC++6.集成環(huán)境與C程序的上機(jī)操作1.4C語言程序開發(fā)工具介紹第1章1.4.2VisualC++6.集成環(huán)境與C程序的上機(jī)操作1.4C語言程序開發(fā)工具介紹第1章1.4.2VisualC++6.集成環(huán)境與C程序的上機(jī)操作
⑵.新建C源程序文件1.4C語言程序開發(fā)工具介紹第1章1.4.2VisualC++6.集成環(huán)境與C程序的上機(jī)操作
⑶.編輯源程序在圖1-12的C源程序編輯區(qū)輸入如下源程序代碼:#include<stdio.h>main(){ printf("IloveCprogramming\n");printf("\n");printf("Howareyoudoing?\n");printf("Hithere!\n"); printf("haveaniceday!\n"); printf("Takecare!\n");}1.4C語言程序開發(fā)工具介紹第1章1.4.2VisualC++6.集成環(huán)境與C程序的上機(jī)操作C源程序編輯區(qū)域顯示錯(cuò)誤與警告區(qū)域1.4C語言程序開發(fā)工具介紹第1章1.4.2VisualC++6.集成環(huán)境與C程序的上機(jī)操作
⑷編譯、連接和運(yùn)行C源程序①編譯C源程序編輯完成后,選擇主菜單“組建(Build)”中的“編譯(Compile)”命令,或工具條上的圖標(biāo)。該操作只編譯當(dāng)前文件而不進(jìn)行連接。系統(tǒng)在編譯時(shí)會(huì)自動(dòng)先保存源程序,然后進(jìn)行編譯。編譯完成后,如果在編譯過程中發(fā)現(xiàn)錯(cuò)誤,將會(huì)在屏幕下方的顯示錯(cuò)誤與警告窗口,顯示所有的錯(cuò)誤和警告信息。雙擊顯示錯(cuò)誤或警告的第一行,則光標(biāo)自動(dòng)跳到代碼的錯(cuò)誤行,當(dāng)修改錯(cuò)誤后,重新進(jìn)行編譯,直到?jīng)]有錯(cuò)誤和警告信息為止。1.4C語言程序開發(fā)工具介紹第1章1.4.2VisualC++6.集成環(huán)境與C程序的上機(jī)操作
②組建1.4C語言程序開發(fā)工具介紹第1章1.4.2VisualC++6.集成環(huán)境與C程序的上機(jī)操作
③運(yùn)行選擇主菜單“組建(Build)”中的“執(zhí)行”命令,或單擊工具條上的圖標(biāo)運(yùn)行程序,將會(huì)出現(xiàn)一個(gè)新的用戶窗口,如圖所示。1.4C語言程序開發(fā)工具介紹第1章1.4.2VisualC++6.集成環(huán)境與C程序的上機(jī)操作
⑸.打開已經(jīng)存在的C源程序,進(jìn)行編輯修改①進(jìn)入VisualC++6.0環(huán)境后,選擇主菜單“文件”中的“打開工作區(qū)”命令,在對(duì)話框內(nèi)找到要打開的工作區(qū)文件,例如ex1_1.dsw,單擊“打開”按鈕,打開工作區(qū),如圖所示。1.4C語言程序開發(fā)工具介紹第1章1.4.2VisualC++6.集成環(huán)境與C程序的上機(jī)操作②選擇主菜單“文件”中的“打開”命令,顯示圖所示的打開C源文件對(duì)話框。在對(duì)話框內(nèi)找到要打開的文件,例如ex1_1.c,單擊“打開”按鈕,即可打開已經(jīng)存在的C源程序。1.4C語言程序開發(fā)工具介紹第1章1.4.2VisualC++6.集成環(huán)境與C程序的上機(jī)操作
3.在VisualC++6.0中程序的調(diào)試與改錯(cuò)⑴修改語法錯(cuò)誤查看運(yùn)算結(jié)果時(shí)要注意錯(cuò)誤的類別,是語法錯(cuò)誤或是算法邏輯錯(cuò)誤。對(duì)于語法錯(cuò)誤,可按照系統(tǒng)所提示的錯(cuò)誤類型對(duì)錯(cuò)誤進(jìn)行修改。
操作步驟為:雙擊顯示錯(cuò)誤或警告的第一行,則光標(biāo)自動(dòng)跳到錯(cuò)誤代碼處。切記,一定要先修改出現(xiàn)的第一個(gè)語法錯(cuò)誤。修改了錯(cuò)誤后,重新進(jìn)行編譯。一般第一個(gè)錯(cuò)誤修改后,后面與其有關(guān)的錯(cuò)誤自然就解決了。若還有錯(cuò)誤,仍然是先修改第一個(gè)錯(cuò)誤,然后再次進(jìn)行編譯,直到?jīng)]有錯(cuò)誤和警告信息為止。1.4C語言程序開發(fā)工具介紹第1章1.4.2VisualC++6.集成環(huán)境與C程序的上機(jī)操作
⑵.編輯、運(yùn)行與調(diào)試程序中常用到的快捷鍵:Ctrl+O:打開文件Ctrl+S:保存文件Ctrl+F7:編譯文件F7:連接文件Ctrk+F5:運(yùn)行文件F9:將光標(biāo)所在行位置設(shè)置為斷點(diǎn)F5:調(diào)試運(yùn)行到斷點(diǎn)F10:不進(jìn)入函數(shù)內(nèi)部調(diào)試F11:進(jìn)入函數(shù)內(nèi)部調(diào)試Shift+F5:中斷調(diào)試1.4C語言程序開發(fā)工具介紹第1章1.4.2VisualC++6.集成環(huán)境與C程序的上機(jī)操作
⑶.修改算法錯(cuò)誤編譯語法通過,但運(yùn)行結(jié)果不正確,就要查找、分析算法,重新進(jìn)行程序設(shè)計(jì)。當(dāng)程序修改后,還要重新進(jìn)行編譯、連接,生成.exe文件后再次運(yùn)行,直到運(yùn)行結(jié)果正確。所以,C語言編程不僅要嚴(yán)格掌握語法規(guī)則,還要認(rèn)真進(jìn)行算法分析和設(shè)計(jì)。謝謝觀看數(shù)據(jù)類型、表達(dá)式及其運(yùn)算第2章本章要點(diǎn)
數(shù)據(jù)類型及定義方法
不同類型的運(yùn)算符及表達(dá)式
指針變量的定義和基本運(yùn)算2.1C語言的數(shù)據(jù)類型第2章任何程序都涉及待處理的數(shù)據(jù),數(shù)據(jù)可以是常量和變量。常量和變量可分為基本類型、構(gòu)造類型、指針類型和空類型。在C語言中,經(jīng)常用到的各種類型數(shù)據(jù),如圖所示。2.1.1C語言的數(shù)據(jù)類型分類2.1C語言的數(shù)據(jù)類型第2章不同的數(shù)據(jù)類型在內(nèi)存中占用不同的存儲(chǔ)空間,它們的取值范圍也不同。表2-1是C語言中常用的基本數(shù)據(jù)類型所對(duì)應(yīng)的字長(存儲(chǔ)空間)和取值范圍。2.1.2C語言的數(shù)據(jù)類型的取值范圍
類型標(biāo)識(shí)符名字長度(字節(jié))取值范圍char字符型
1ASCII字符代碼unsignedchar無符號(hào)字符型
10~255shortint短整型2-32768~32767int整型
4-2147483648~2147483647unsignedint無符號(hào)整型
4
0~4294967295longint長整型
4-2147483648~2147483647float單精度型
4
double雙精度型
82.1C語言的數(shù)據(jù)類型第2章以上不同類型的數(shù)據(jù)輸出時(shí)需要使用Printf函數(shù)語句,Printf函數(shù)是一個(gè)標(biāo)準(zhǔn)的格式輸出函數(shù)。一般格式為:
Printf(“控制格式”,輸出參數(shù)1,輸出參數(shù)2···輸出參數(shù)n);作用是在屏幕上輸出引號(hào)內(nèi)的信息或按控制格式所規(guī)定的格式輸出數(shù)據(jù)。為將要顯示的數(shù)據(jù)指定需要輸出的格式,需要用到以下不同的轉(zhuǎn)換字符。具體含義如下:2.1.3初識(shí)printf函數(shù)輸出語句
%d表示數(shù)據(jù)按十進(jìn)制整型數(shù)輸出;
%f表示數(shù)據(jù)按十進(jìn)制帶小數(shù)點(diǎn)的形式輸出;
%o表示數(shù)據(jù)按十進(jìn)制八進(jìn)制整型數(shù)輸出;
%x表示數(shù)據(jù)按十進(jìn)制十六進(jìn)制整型數(shù)輸出;
%c表示數(shù)據(jù)按字符型數(shù)輸出;
%u表示數(shù)據(jù)按十進(jìn)制無符號(hào)整型數(shù)輸出2.2常量第2章常量可分為不同的類型。常用的有:
常量C語言中的數(shù)據(jù)有常量和變量之分。常量又稱常數(shù),是指在程序運(yùn)行中,其值不能被改變的量。整型常量實(shí)型常量字符常量字符串常量符號(hào)常量2.2常量第2章整型常量是由一個(gè)或多個(gè)數(shù)字組成,可以有正、負(fù)號(hào),但不能有小數(shù)點(diǎn)。整型常量有三種表示方法:2.2.1整型常量
(1)十進(jìn)制整數(shù):取值范圍:0~9。如1236,-234,0。(2)八進(jìn)制整數(shù):以0開頭的數(shù)是八進(jìn)制數(shù),取值范圍:0~7。如:011表示八進(jìn)制數(shù)的(11)8。(3)十六進(jìn)制整數(shù):以0x開頭的數(shù)是十六進(jìn)制數(shù),取值范圍:0~9,A~F或a~f。如:0x1F表示十六進(jìn)制數(shù)的(1F)16,(十進(jìn)制數(shù)為31)。2.2常量第2章2.2.1整型常量
【例2.1】三種進(jìn)制表示方法的轉(zhuǎn)換。main(){intx=1246,y=01246,z=0x1246;printf(″%d,%d,%d\n″,x,y,z);/*%d:以十進(jìn)制格式符輸出*/printf(″%o,%o,%o\n″,x,y,z);/*%o:以八進(jìn)制格式符輸出*/printf(″%x,%x,%x\n″,x,y,z);/*%x:以十六進(jìn)制格式符輸出*/}2.2常量第2章在C語言中,把帶小數(shù)的數(shù)值稱為實(shí)數(shù)或浮點(diǎn)數(shù)。C語言實(shí)型常量只使用十進(jìn)制數(shù)。有以下兩種表示形式:2.2.2
實(shí)型常量
1.十進(jìn)制數(shù)形式:由正負(fù)號(hào)、整數(shù)部分、小數(shù)點(diǎn)、小數(shù)部分組成。如:3.14159,-7.21,128.96等都是十進(jìn)制形式。
2.指數(shù)形式:由正負(fù)號(hào)、整數(shù)部分、小數(shù)點(diǎn)、小數(shù)部分和字母E或e后面帶正負(fù)號(hào)的整數(shù)組成。如:十進(jìn)制數(shù)180000=(1.8×)用指數(shù)法可以表示為1.8e5,其中:1.8稱為尾數(shù),5稱為指數(shù)。2.2常量第2章字符型常量是由一對(duì)單引號(hào)括起來的單個(gè)字符,在內(nèi)存中占1個(gè)字節(jié)。例如:′A′,′b′,′2′,′%′,′;′等都是有效的字符型常量。一個(gè)字符型常量的值是該字符集中對(duì)應(yīng)的ASCII編碼值(參見附錄Ⅰ)。例如,字符常量′0′~′9′對(duì)應(yīng)的ASCII編碼值是48~57。顯然′0′與數(shù)字0是不同的,這是初學(xué)者容易混淆的一點(diǎn),具體可以參看附錄Ⅰ。C語言中還允許用一種特殊形式的字符常量,即以反斜杠字符′\′開頭的字符序列。前面用的printf()函數(shù)中的′\n′,代表一個(gè)“回車換行”符。這類字符稱為“轉(zhuǎn)義字符”,意思是將反斜杠“\”后面的字符轉(zhuǎn)換成另外的意義。2.2.3字符型常量
2.2常量第2章表2-2轉(zhuǎn)換碼序列表2.2.3字符型常量轉(zhuǎn)義符ASCII碼字符含義\00NULL表示字符串結(jié)束\n10NL(LF)換行,將當(dāng)前光標(biāo)移到下一行的開頭\t9HT水平制表\v11VT垂直制表\b8BS左退一格\r13CR回車,將當(dāng)前光標(biāo)移到本行的開頭\f12FF換頁\’39單引號(hào)\”34雙引號(hào)\\92\反斜線\ddd1至3位八進(jìn)制數(shù)所代表的字符\xhh1至2位十六進(jìn)制數(shù)所代表的字符2.2常量第2章字符串常量是由一對(duì)雙引號(hào)括起來的字符序列,若字符序列串長為N,則在內(nèi)存占用N+1個(gè)內(nèi)存單元,字符串常量在內(nèi)存中存儲(chǔ)時(shí),系統(tǒng)自動(dòng)加上串尾標(biāo)記“\0”。例如:″program″,″A″,″book″都是字符串常量,雙引號(hào)起定界符的作用。因?yàn)镃語言中規(guī)定字符串常量以字符′\0′作為結(jié)束標(biāo)志,系統(tǒng)將根據(jù)該字符判斷字符串是否結(jié)束。對(duì)于字符串″CHINA″,它在內(nèi)存中實(shí)際存放的形式如圖所示。其長度是6個(gè)字節(jié),而不是5個(gè)字節(jié)。字符′\0′所對(duì)應(yīng)的ASCII值為0,即“空”字符。2.2.4
字符串常量
CHINA\02.2常量第2章用一個(gè)特定的符號(hào)來代替一個(gè)常量或代替一個(gè)較為復(fù)雜的字符串,這個(gè)符號(hào)稱為符號(hào)常量。它通常由預(yù)處理命令#define來定義。符號(hào)常量一般用大寫字母表示,以便與其它標(biāo)識(shí)符相區(qū)別。符號(hào)常量的一般定義形式:#define符號(hào)常量常量(或“字符串”)預(yù)處理#define又稱為宏定義命令,一個(gè)#define命令只能定義一個(gè)符號(hào)常量。因?yàn)樗皇钦Z句,所以結(jié)尾不用加分號(hào)。2.2.5
符號(hào)常量
2.2常量第2章2.2.5
符號(hào)常量
使用符號(hào)常量的優(yōu)點(diǎn)如下:(1)增強(qiáng)可讀性。在程序中定義一些具有一定意義的符號(hào)常量,能起到“見名知義”的作用。(2)簡化輸入程序。使用符號(hào)常量代替一個(gè)字符串,可以減輕程序中重復(fù)書寫某些字符串的工作量。(3)增強(qiáng)程序的通用性和可維護(hù)性。如果一個(gè)程序中有多處使用同一個(gè)常量,這時(shí),可把該常量定義為一個(gè)符號(hào)常量。若需要修改該常量時(shí),則只需要在定義處修改即可??梢宰鞯揭桓娜?,避免出現(xiàn)修改不完全或遺漏等錯(cuò)誤。2.3變量第2章變量是指在程序運(yùn)行過程中其值可以被改變的某個(gè)標(biāo)識(shí)符。C語言中的變量可以分為以下幾種類型,如圖所示。2.3.1.變量的概念
2.3變量第2章在C語言中,無論使用哪一種類型變量,都要“先定義”,后“使用”。所謂定義,是給程序中用到的變量定義一個(gè)類型,即取值范圍。初始化,就是在定義變量的同時(shí),給變量賦初值。2.3.2
變量的定義與初始化
變量定義格式為:〈數(shù)據(jù)類型〉〈變量名表〉;例:inta;/*定義變量a為int,系統(tǒng)給a分配4個(gè)字節(jié)的內(nèi)存空間*/a=10;/*給變量a賦值10,即把10送入a所分配的內(nèi)存中*/或:inta=10;/*定義變量a的同時(shí),給a賦值10,又稱給變量初始化*/我們可以用以上兩種方法給變量賦初值。2.3變量第2章
1.整型變量整型變量用來存放整型數(shù)據(jù)(即不帶小數(shù)點(diǎn)的數(shù))。有以下幾種類型,其定義的關(guān)鍵字如下:2.3.2
變量的定義與初始化
(1)基本型:用int表示(4個(gè)字節(jié))(2)短整型:用shortint或short表示(2字節(jié))(3)長整型:用longint或long表示(4字節(jié))(4)無符號(hào)整型:①無符號(hào)整型:用unsignedint或unsigned表示(4字節(jié))②無符號(hào)短整型:用unsignedshortint或unsignedshort表示(2字節(jié))③無符號(hào)長整型:用unsignedlongint或unsignedlong表示(4字節(jié))2.3變量第2章
無符號(hào)整型變量在存儲(chǔ)單元中的全部二進(jìn)制位都用來存放數(shù)據(jù)本身。而沒有符號(hào)位,即不能存放負(fù)數(shù)。下面以短整型變量在內(nèi)存中占兩個(gè)字節(jié)(16bit)為例,來說明無符號(hào)與有符號(hào)數(shù)據(jù)類型的區(qū)別。短整型變量數(shù)值的表示范圍是-32768~32767,若不考慮符號(hào)位,無符號(hào)短整型數(shù)值的表示范圍為0~65535,如圖2-4所示,可以看出它們的取值范圍是不同的。2.3.2
變量的定義與初始化
2.3變量第2章2.3.2
變量的定義與初始化
【例2.2】簡單的算術(shù)運(yùn)算。#include<stdio.h>main(){inta,b,s1,s2;/*定義a,b,s1,s2為整型變量*/unsignedx=20;/*定義x為無符號(hào)整型變量并賦初值20*/a=10;b=-30;/*給變量a,b分別賦值*/s1=a+x;/*進(jìn)行計(jì)算,結(jié)果賦給變量s1*/s2=b+x;/*進(jìn)行計(jì)算,結(jié)果賦給變量s2*/printf(″a+x=%d,b+x=%d\n″,s1,s2);/*a+x=,b+x=是字符串原樣輸出,%d是按整型格式輸出變量s1,s2的值,\n是輸出數(shù)據(jù)后換行*/}運(yùn)行結(jié)果為:
a+x=30,b+x=-102.3變量第2章2.實(shí)型變量實(shí)型變量又稱浮點(diǎn)型變量,按能夠表示數(shù)的小數(shù)點(diǎn)后的精度,C語言實(shí)型變量分為三種:(1)單精度型:用float表示,在內(nèi)存占用4個(gè)字節(jié),有效數(shù)字6~7位。(2)雙精度型:用double表示,在內(nèi)存占用8個(gè)字節(jié),有效數(shù)字15~16位。(3)長雙精度型:用longdouble表示,在內(nèi)存占用16個(gè)字節(jié),有效數(shù)字18~19位。2.3.2
變量的定義與初始化
2.3變量第2章其定義方式如下:floata,b;/*定義單精度變量a,b*/doublec,d;/*定義雙精度變量c,d*/單精度浮點(diǎn)型變量和雙精度浮點(diǎn)型變量之間的差異僅僅體現(xiàn)在所能表示的數(shù)的精度上。一般單精度型數(shù)據(jù)占4個(gè)字節(jié),有效位為7位,數(shù)值范圍約為10-38~1038,而雙精度型數(shù)據(jù)占8個(gè)字節(jié),有效位為15~16位,數(shù)值范圍約為10-308~10308。2.3.2
變量的定義與初始化
2.3變量第2章2.3.2
變量的定義與初始化
【例2.3】不同類型數(shù)據(jù)的輸出比較。#include<stdio.h>main(){floata;doubleb;a=123456.111;b=123456.111;printf("a=%f,b=%lf\n",a,b);}
運(yùn)行結(jié)果:a=123456.109375,b=123456.1110002.3變量第2章
3.字符型變量
一個(gè)字符型變量用來存放一個(gè)字符,在內(nèi)存中占一個(gè)字節(jié)。實(shí)際上,將一個(gè)字符常數(shù)賦值給一個(gè)字符變量,并不是把該字符本身放到內(nèi)存單元中去,而是將該字符對(duì)應(yīng)的ASCII值(整數(shù))存放到內(nèi)存單元中。因此,字符型數(shù)據(jù)也可以像整型數(shù)據(jù)那樣使用,用來表示一些特定范圍內(nèi)的整數(shù)。
字符型數(shù)據(jù)分為兩類:2.3.2
變量的定義與初始化
一般字符類型(char)無符號(hào)字符類型(unsignedchar)2.3變量第2章其定義方式如下:floata,b;/*定義單精度變量a,b*/doublec,d;/*定義雙精度變量c,d*/單精度浮點(diǎn)型變量和雙精度浮點(diǎn)型變量之間的差異僅僅體現(xiàn)在所能表示的數(shù)的精度上。一般單精度型數(shù)據(jù)占4個(gè)字節(jié),有效位為7位,數(shù)值范圍約為10-38~1038,而雙精度型數(shù)據(jù)占8個(gè)字節(jié),有效位為15~16位,數(shù)值范圍約為10-308~10308。2.3.2
變量的定義與初始化
2.3變量第2章其定義方式如下:floata,b;/*定義單精度變量a,b*/doublec,d;/*定義雙精度變量c,d*/單精度浮點(diǎn)型變量和雙精度浮點(diǎn)型變量之間的差異僅僅體現(xiàn)在所能表示的數(shù)的精度上。一般單精度型數(shù)據(jù)占4個(gè)字節(jié),有效位為7位,數(shù)值范圍約為10-38~1038,而雙精度型數(shù)據(jù)占8個(gè)字節(jié),有效位為15~16位,數(shù)值范圍約為10-308~10308。2.3.2
變量的定義與初始化
2.3變量第2章2.3.2
變量的定義與初始化
【例2.4】字符型數(shù)據(jù)與整型數(shù)據(jù)的互相賦值運(yùn)算。
#include<stdio.h>main(){charc1,c2;/*定義c1,c2為字符型變量*/c1=65;c2=66;/*將數(shù)值65、66分別賦給c1,c2*/printf(″%c,%c\n″,c1,c2);/*按字符格式輸出c1,c2對(duì)應(yīng)的字符*/printf(″%d,%d\n″,c1,c2);/*按十進(jìn)制輸出c1,c2對(duì)應(yīng)的ASCII碼值*/}運(yùn)行結(jié)果為
A,B65,662.3變量第2章4.指針變量指針又稱地址,指針變量即存放地址的變量。變量的三要素是變量名、變量值與變量地址。而變量值與變量地址是兩個(gè)不同的概念,變量在內(nèi)存所占的存儲(chǔ)單元中存放的數(shù)據(jù)稱為變量的值;變量在內(nèi)存所占的存儲(chǔ)單元的首地址稱為變量的地址。變量的地址只可以存儲(chǔ)在指針變量中,通過指針變量來引用地址中的數(shù)據(jù)。指針變量與其它變量一樣,也要先定義后使用。指針變量定義的一般形式:
2.3.2
變量的定義與初始化
數(shù)據(jù)類型*指針變量名;2.3變量第2章2.3.2
變量的定義與初始化
【例2.6】輸出變量與指針變量的值。#include<stdio.h>main(){inta=10;/*a的值為10,變量a的內(nèi)存地址編號(hào)為1245052*/int*p;/*定義存放整型變量地址的指針變量p*/p=&a;/*將整型變量a的地址送給指針變量p*/printf(“a=%d,p=%u”,a,p);/*分別打印出變量a和指針變量p中的值*/}
運(yùn)行結(jié)果:a=10,p=1245052
2.4運(yùn)算符及表達(dá)式第2章
1.C語言的運(yùn)算符常用的C語言中的運(yùn)算符有以下幾類:2.4.1.C語言運(yùn)算符
(1)算術(shù)運(yùn)算符:(+-*/%++--)(2)關(guān)系運(yùn)算符:(<<=>>===!=)(3)邏輯運(yùn)算符:(&&||!)(4)賦值運(yùn)算符:(=+=-=*=/=%=)(5)指針運(yùn)算符:(*&)(6)條件運(yùn)算符:(?:)(7)逗號(hào)運(yùn)算符:(,)(8)位運(yùn)算符:(&|~∧<<>>)(9)求字節(jié)運(yùn)算符:(sizeof)(10)特殊運(yùn)算符:(()[]->等)(11)分量運(yùn)算符:(.—>)(12)下標(biāo)運(yùn)算符:([])(13)其他:(如函數(shù)調(diào)用運(yùn)算符)2.4運(yùn)算符及表達(dá)式第2章
2.C運(yùn)算符的優(yōu)先級(jí)與結(jié)合性由于C語言的運(yùn)算符多,使用時(shí)變化非常豐富,所以,C語言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。當(dāng)一個(gè)表達(dá)式中有多個(gè)運(yùn)算符參加運(yùn)算時(shí),將按不同的先后次序進(jìn)行運(yùn)算。這種計(jì)算的先后次序稱為運(yùn)算符的優(yōu)先級(jí)。結(jié)合性是指,當(dāng)一個(gè)操作數(shù)兩側(cè)的運(yùn)算符具有相同優(yōu)先級(jí)時(shí),該操作數(shù)是先與左邊還是先與右邊的運(yùn)算符結(jié)合進(jìn)行運(yùn)算。從左至右的結(jié)合方向,稱為左結(jié)合性。反之,稱為右結(jié)合性。結(jié)合性是C語言的獨(dú)有概念。除單目運(yùn)算符、賦值運(yùn)算符和條件運(yùn)算符是右結(jié)合性外,其他運(yùn)算符都是左結(jié)合性。2.4.1.C語言運(yùn)算符
2.4運(yùn)算符及表達(dá)式第2章表2-3運(yùn)算符的優(yōu)先級(jí)和結(jié)合性2.4.1.C語言運(yùn)算符
優(yōu)先級(jí)
運(yùn)
算
符
含
義要求運(yùn)算對(duì)象個(gè)數(shù)結(jié)合方向(高)1()[]
一>
。圓括號(hào)下標(biāo)運(yùn)算符指向結(jié)構(gòu)體成員運(yùn)算符結(jié)構(gòu)體成員運(yùn)算符自左至右2!~++___(類型)*&sizeof邏輯非運(yùn)算符按位取反運(yùn)算符自增運(yùn)算符自減運(yùn)算符負(fù)號(hào)運(yùn)算符類型轉(zhuǎn)換運(yùn)算符指針運(yùn)算符取地址運(yùn)算符取長度運(yùn)算符(字節(jié)數(shù))(單目運(yùn)算符)自右至左2.4運(yùn)算符及表達(dá)式第2章表2-3運(yùn)算符的優(yōu)先級(jí)和結(jié)合性2.4.1.C語言運(yùn)算符
優(yōu)先級(jí)
運(yùn)
算
符
含
義要求運(yùn)算對(duì)象個(gè)數(shù)結(jié)合方向3*/%乘法運(yùn)算符除法運(yùn)算符求余運(yùn)算符(取模運(yùn)算)(雙目運(yùn)算符)自左至右4+-加法運(yùn)算符減法運(yùn)算符(雙目運(yùn)算符)自左至右5<<>>左移運(yùn)算符右移運(yùn)算符
(雙目運(yùn)算符)自左至右6<<=>>=關(guān)系運(yùn)算符(雙目運(yùn)算符)自左至右7
==!=等于運(yùn)算符不等于運(yùn)算符(雙目運(yùn)算符)自左至右8&按位“與”運(yùn)算符(雙目運(yùn)算符)自左至右9∧按位“異或”運(yùn)算符(雙目運(yùn)算符)自左至右2.4運(yùn)算符及表達(dá)式第2章表2-3運(yùn)算符的優(yōu)先級(jí)和結(jié)合性2.4.1.C語言運(yùn)算符
優(yōu)先級(jí)
運(yùn)
算
符
含
義要求運(yùn)算對(duì)象個(gè)數(shù)結(jié)合方向10|按位“或”運(yùn)算符(雙目運(yùn)算符)自左至右11&&邏輯與運(yùn)算符
(雙目運(yùn)算符)自左至右12
||邏輯或運(yùn)算符(雙目運(yùn)算符)自左至右13
?:條件運(yùn)算符(三目運(yùn)算符)自右至左14=十=—=*=/=%=>>=<<=&=∧=|=賦值運(yùn)算符(雙目運(yùn)算符)自右至左(低)15,逗號(hào)運(yùn)算符(順序求值)自左至右2.4運(yùn)算符及表達(dá)式第2章
3.表達(dá)式求值順序用運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(常量、變量和函數(shù)等)連接起來的、符合C語言語法規(guī)則的式子稱為表達(dá)式。例如,(a+b+c)/3凡是表達(dá)式都有一個(gè)值,即運(yùn)算結(jié)果。一個(gè)表達(dá)式的求值順序是:先乘除后加減,括號(hào)優(yōu)先,同級(jí)運(yùn)算符按照從左到右的順序執(zhí)行。同時(shí)還要考慮C語言規(guī)定的結(jié)合性(結(jié)合方向)。不同級(jí)運(yùn)算符按表2-3中的優(yōu)先級(jí)高低順序執(zhí)行。2.4.1.C語言運(yùn)算符
2.4運(yùn)算符及表達(dá)式第2章
1.基本算術(shù)運(yùn)算符+:加法運(yùn)算符。如5+7,a+b。-:減法運(yùn)算符。如9-3,a-b。*:乘法運(yùn)算符。如,4*12,a*b。/:除法運(yùn)算符。如16/2,a/b。以上加、減、乘、除運(yùn)算符,與數(shù)學(xué)中的運(yùn)算相同。%:取余運(yùn)算符(又稱模運(yùn)算)。如17%5,a%b。取余%運(yùn)算只能用于兩個(gè)整型常量或整型變量,其運(yùn)算結(jié)果為兩整數(shù)整除后所得的余數(shù)。2.4.2
算術(shù)運(yùn)算符和表達(dá)式
2.4運(yùn)算符及表達(dá)式第2章
2.自增(++)與自減(--)運(yùn)算符++自增運(yùn)算符。如a++,++a。 --自減運(yùn)算符。如a--,--a。自增++(自增1)與自減--(自減1)運(yùn)算符,是C語言中兩個(gè)最有特色的單目運(yùn)算符。自增或自減運(yùn)算的作用是,使變量的值自己增1或減1。所以,也稱為增1或減1運(yùn)算。這兩個(gè)運(yùn)算符有兩種用法,一種在變量之前,稱為前置;另一種在變量之后,稱為后置。2.4.2
算術(shù)運(yùn)算符和表達(dá)式
2.4運(yùn)算符及表達(dá)式第2章(1)前置運(yùn)算——運(yùn)算符放在變量之前:++變量--變量先使變量的值增(或減)1,然后再以變化后的值參與運(yùn)算。即先增減、后運(yùn)算。例如:a=3;/*a=3*/b=(++a)*5;/*先執(zhí)行a加1,再執(zhí)行4*5的值賦給b,所以b=20,a=4*/2.4.2
算術(shù)運(yùn)算符和表達(dá)式
2.4運(yùn)算符及表達(dá)式第2章(2)后置運(yùn)算——運(yùn)算符放在變量之后:變量++變量--變量先參與表達(dá)式的運(yùn)算,然后再使變量的值增(或減)1。即先運(yùn)算,后增減。例如:a=3;/*a=3*/b=(a++)*5;/*先執(zhí)行a*5的值賦給b,再執(zhí)行a加1,所以b=15,a=4*/2.4.2
算術(shù)運(yùn)算符和表達(dá)式
2.4運(yùn)算符及表達(dá)式第2章2.4.2
算術(shù)運(yùn)算符和表達(dá)式
【例2.7】寫出程序的運(yùn)行結(jié)果。#include<stdio.h>main(){inta=100;printf(″a=%d\n″,a++);/*a++是后置運(yùn)算,所以先輸出100后加1,a=101*/printf(″a=%d\n″,++a);/*++a是前置運(yùn)算,所以a先加1后輸出,a=102*/printf(″a=%d\n″,a--);/*a--是后置運(yùn)算,所以先輸出102,后a減1,a=101*/printf(″a=%d\n″,--a);/*--a是前置運(yùn)算,所以a先減1后輸出,a=100*/}輸出結(jié)果:a=100a=102a=102a=1002.4運(yùn)算符及表達(dá)式第2章
用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象如常量、變量和函數(shù)等連接起來的式子稱為算術(shù)表達(dá)式。例如:a+b*c+(x/y)-700,100%3+100*2等,都是合法的算術(shù)表達(dá)式。2.4.3
算術(shù)表達(dá)式
算術(shù)表達(dá)式書寫規(guī)則如下:
(1)所有字符必須寫在同一水平線。
(2)相乘的地方必須寫上“*”符號(hào),不能省略,也不能用“·”代替。
(3)算術(shù)表達(dá)式中出現(xiàn)的括號(hào)一律用小括號(hào),且一定要成對(duì)。2.4運(yùn)算符及表達(dá)式第2章在內(nèi)存中,字符是以字符的編碼值形式存儲(chǔ)的。除字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用之外,不同類型的數(shù)據(jù)在進(jìn)行混合運(yùn)算時(shí),須先轉(zhuǎn)換成同一類型,然后再進(jìn)行運(yùn)算。不同類型的數(shù)據(jù)轉(zhuǎn)換有兩種方式:一種是自動(dòng)類型轉(zhuǎn)換,也稱為隱式轉(zhuǎn)換;另一種是強(qiáng)制類型轉(zhuǎn)換,稱為顯式轉(zhuǎn)換。1.自動(dòng)轉(zhuǎn)換(隱式轉(zhuǎn)換)
(1)表達(dá)式中不同類型數(shù)據(jù)由低向高轉(zhuǎn)換C語言允許在整型、單精度浮點(diǎn)型數(shù)據(jù)之間進(jìn)行混合運(yùn)算。在進(jìn)行運(yùn)算時(shí),首先將不同類型的數(shù)據(jù)由低向高轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。2.4.4數(shù)據(jù)間的混合運(yùn)算與類型轉(zhuǎn)換
2.4運(yùn)算符及表達(dá)式第2章轉(zhuǎn)換規(guī)則如下:高低
double(8個(gè)字節(jié))←float(4個(gè)字節(jié))↑longint(4個(gè)字節(jié))↑unsignedint(4個(gè)字節(jié))↑int(4個(gè)字節(jié))←shortint(2字節(jié))←char(1個(gè)字節(jié))2.4.4數(shù)據(jù)間的混合運(yùn)算與類型轉(zhuǎn)換
2.4運(yùn)算符及表達(dá)式第2章
(2)賦值號(hào)右邊的數(shù)據(jù)轉(zhuǎn)換成左邊的類型當(dāng)把一個(gè)變量的值賦給另一個(gè)變量時(shí),轉(zhuǎn)換規(guī)則是:把賦值號(hào)右邊的類型轉(zhuǎn)換成賦值號(hào)左邊的類型。若右邊的數(shù)據(jù)類型的長度大于左邊,則要進(jìn)行截?cái)嗷蛏崛氩僮鳌?.4.4數(shù)據(jù)間的混合運(yùn)算與類型轉(zhuǎn)換
2.4運(yùn)算符及表達(dá)式第2章2.4.4數(shù)據(jù)間的混合運(yùn)算與類型轉(zhuǎn)換
【例2.9】寫出下面程序的運(yùn)行結(jié)果。
#include<stdio.h>
main()
{
inta,b;
floatx,y=1.4;
a=3.5;
/*賦值時(shí)因?yàn)閍是整型變量,所以a=3*/
x=57;
/*賦值時(shí)因?yàn)閤是實(shí)型變量,所以x=57.00000*/
b=a+x+y;
/*a+x+y=61.900000,但是b是整型變量,所以b=61*/
printf(“b=%d\n”,b);
}運(yùn)行結(jié)果:b=612.4運(yùn)算符及表達(dá)式第2章
2.強(qiáng)制轉(zhuǎn)換(顯式轉(zhuǎn)換)轉(zhuǎn)換格式如下::
(強(qiáng)制轉(zhuǎn)換的類型名稱)(操作數(shù))作用:把操作數(shù)強(qiáng)制轉(zhuǎn)換為指定的類型。例如:(int)(a+b),將a+b的結(jié)果強(qiáng)制轉(zhuǎn)換成int型;
又如:(float)a/b,將a強(qiáng)制轉(zhuǎn)換成float型后,再進(jìn)行除法運(yùn)算,結(jié)果為float型。2.4.4數(shù)據(jù)間的混合運(yùn)算與類型轉(zhuǎn)換
2.4運(yùn)算符及表達(dá)式第2章2.4.4數(shù)據(jù)間的混合運(yùn)算與類型轉(zhuǎn)換
【例2.10】寫出下面程序的運(yùn)行結(jié)果。#include<stdio.h>main(){floatf=7.12;
/*定義變量f為實(shí)型數(shù)據(jù)*/inta=5,b;b=(int)f%a;
/*實(shí)型數(shù)據(jù)不能取余運(yùn)算,所以對(duì)變量f進(jìn)行強(qiáng)制轉(zhuǎn)換為int型*/printf(“b=%d\n”,b);
/*7%5=2,所以打印b=2*/printf(“f=%f\n”,f);
/*f的類型及值沒有變,仍為7.120000*/}運(yùn)行結(jié)果為:b=2f=7.1200002.5賦值運(yùn)算符和賦值表達(dá)式第2章所謂賦值是指將一個(gè)數(shù)據(jù)存儲(chǔ)到某個(gè)變量對(duì)應(yīng)的內(nèi)存存儲(chǔ)單元的過程。賦值運(yùn)算符有兩種類型:基本賦值運(yùn)算符和復(fù)合賦值運(yùn)算符。C語言的賦值運(yùn)算符是“=”,它的作用是將賦值運(yùn)算符右邊表達(dá)式的值賦給其左邊的變量。例如:a=10;x=a+5;前者是把常量10賦給變量a,后者是將表達(dá)式a+5的值賦給變量x。2.5.1
基本賦值運(yùn)算符
2.5賦值運(yùn)算符和賦值表達(dá)式第2章2.5.2
復(fù)合賦值運(yùn)算符
C語言允許在賦值運(yùn)算符“=”之前加上其他運(yùn)算符,以構(gòu)成其復(fù)合運(yùn)算符。復(fù)合運(yùn)算符多數(shù)為雙目運(yùn)算符。在C語言中,可以使用的復(fù)合賦值運(yùn)算符有10個(gè):+=、-=、*=、/=、%=、&=、∧=、|=、<<=、>>=例:x+=10;執(zhí)行過程為:先對(duì)賦值運(yùn)算符左右兩側(cè)進(jìn)行運(yùn)算,然后,再把結(jié)果賦值給左邊的變量。即相當(dāng)于:x=x+10;例如:a+=2;等價(jià)于a=a+2x%=6;等價(jià)于x=x%6x*=y+10;等價(jià)于x=x*(y+10)2.5賦值運(yùn)算符和賦值表達(dá)式第2章2.5.2
復(fù)合賦值運(yùn)算符
1.賦值表達(dá)式的定義由賦值運(yùn)算符或復(fù)合賦值運(yùn)算符,將一個(gè)變量和一個(gè)表達(dá)式連接起來的式子稱為賦值表達(dá)式。一般格式:〈變量〉(賦值運(yùn)算符/復(fù)合賦值運(yùn)算符)〈表達(dá)式〉;它的功能是將賦值運(yùn)算符右邊的“表達(dá)式”的值賦給左邊的變量。一般常見的賦值表達(dá)式有以下幾種:①一般賦值表達(dá)式例:a=10:y=x+y等。②賦值表達(dá)式中的“表達(dá)式”,又是一個(gè)賦值表達(dá)式例:a=(b=4)。③賦值表達(dá)式也可以包含復(fù)合賦值運(yùn)算符2.5賦值運(yùn)算符和賦值表達(dá)式第2章2.5.2
復(fù)合賦值運(yùn)算符
2.賦值表達(dá)式與賦值語句賦值表達(dá)式與賦值語句的區(qū)別是語句末尾有無分號(hào)“;”。當(dāng)在一個(gè)賦值表達(dá)式后面加上分號(hào),就可以構(gòu)成賦值語句。例:y=a=3(賦值表達(dá)式)a=3;(賦值語句)i++(賦值表達(dá)式)2.6逗號(hào)運(yùn)算符及其表達(dá)式第2章2.6.1
逗號(hào)運(yùn)算符與表達(dá)式
逗號(hào)運(yùn)算符為“,”。逗號(hào)表達(dá)式是用逗號(hào)運(yùn)算符把兩個(gè)表達(dá)式組合成的一個(gè)表達(dá)式。其一般形式為:〈表達(dá)式1〉,〈表達(dá)式2〉說明:(1)逗號(hào)表達(dá)式的執(zhí)行過程是:先求表達(dá)式1的值,再求表達(dá)式2的值,表達(dá)式2的值就是整個(gè)逗號(hào)表達(dá)式的值。(2)一個(gè)逗號(hào)表達(dá)式可以與另一個(gè)表達(dá)式構(gòu)成一個(gè)新的逗號(hào)表達(dá)式。2.6逗號(hào)運(yùn)算符及其表達(dá)式第2章2.6.2
逗號(hào)運(yùn)算符舉例
【例2.11】分析程序運(yùn)行結(jié)果。#include<stdio.h>main(){intx,y;
x=50;
y=(x=x-5,x/5);/*x的初值=50,減5后為45,再被5除,所以y=9*/printf(“y=%d\n”,y);}運(yùn)行結(jié)果:y=92.7指針的基本知識(shí)與運(yùn)算第2章2.7.1
地址與指針的概念
指針是C語言中的精髓,也是C語言的重要特色。C語言的高度靈活性及極強(qiáng)的表達(dá)能力,在很大程度上來自于巧妙而恰當(dāng)?shù)厥褂弥羔?。前面簡單介紹了指針變量的概念,下面將詳細(xì)介紹指針與指針運(yùn)算。變量的指針與變量的值計(jì)算機(jī)中內(nèi)存是以字節(jié)為單位的一片連續(xù)的存儲(chǔ)空間。每一個(gè)字節(jié)都有一個(gè)編號(hào),這個(gè)編號(hào)就是內(nèi)存地址。就像教學(xué)大樓的房間編號(hào)一樣,根據(jù)房間號(hào)很容易找到教室及其中的某個(gè)同學(xué)。同樣,根據(jù)內(nèi)存地址可以準(zhǔn)確地找到相應(yīng)的內(nèi)存單元及其中的變量值。
2.7指針的基本知識(shí)與運(yùn)算第2章2.7.1
地址與指針的概念
【例2.12】輸出變量的值和變量的指針(地址)。#include"stdio.h"main(){inta=10,b=20;charc='X',d='Y';floate=5.6,f=-2.8;printf("%d,%d\n",a,b);/*輸出整型變量a,b的值*/printf("%c,%c\n",c,d);/*輸出字符變量c,d的值*/printf("%f,%f\n",e,f);/*輸出實(shí)型變量e,f的值*/printf("%u,%u,%u,%u,%u,%u\n",&a,&b,&c,&d,&e,&f);/*輸出所有變量的地址值*/}2.7指針的基本知識(shí)與運(yùn)算第2章2.7.1
地址與指針的概念
2.變量的指針和指針變量C語言中,一個(gè)變量所分配的內(nèi)存空間首字節(jié)地址,稱為該變量的指針(地址)。地址一旦被分配,只要程序沒有結(jié)束,就不會(huì)再改變。所以,變量的指針(地址)是一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度工業(yè)垃圾處理合同:廢物回收與循環(huán)利用規(guī)定2篇
- 2025年無紡環(huán)保袋環(huán)保認(rèn)證與市場推廣合作協(xié)議3篇
- 二零二五年房產(chǎn)代持稅務(wù)籌劃合同3篇
- 2025年銑刨料運(yùn)輸、加工及土地整治工程合同3篇
- 2025版企業(yè)英語培訓(xùn)兼職外教協(xié)議書樣本3篇
- 2025年度鋁灰綜合利用技術(shù)合作合同4篇
- 物業(yè)管理服務(wù)2025年度維修基金合同3篇
- 二零二五版物流園區(qū)供氣服務(wù)合同正規(guī)范本3篇
- 2025年度智慧城市建設(shè)與運(yùn)營管理合同3篇
- 二零二五年度科研機(jī)構(gòu)實(shí)驗(yàn)室設(shè)備借用及知識(shí)產(chǎn)權(quán)保護(hù)合同3篇
- 我的家鄉(xiāng)瓊海
- (2025)專業(yè)技術(shù)人員繼續(xù)教育公需課題庫(附含答案)
- 《互聯(lián)網(wǎng)現(xiàn)狀和發(fā)展》課件
- 【MOOC】計(jì)算機(jī)組成原理-電子科技大學(xué) 中國大學(xué)慕課MOOC答案
- 2024年上海健康醫(yī)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案解析
- 2024年湖北省武漢市中考語文適應(yīng)性試卷
- 非新生兒破傷風(fēng)診療規(guī)范(2024年版)解讀
- EDIFIER漫步者S880使用說明書
- 通信電子線路(哈爾濱工程大學(xué))智慧樹知到課后章節(jié)答案2023年下哈爾濱工程大學(xué)
- 皮膚惡性黑色素瘤-疾病研究白皮書
- 從心理學(xué)看現(xiàn)代家庭教育課件
評(píng)論
0/150
提交評(píng)論