![譚浩強(qiáng)_C語言程序設(shè)計(jì)基礎(chǔ)教程_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/15/fce6cfb4-ebed-45fc-ad1d-9aff0e2a3bfb/fce6cfb4-ebed-45fc-ad1d-9aff0e2a3bfb1.gif)
![譚浩強(qiáng)_C語言程序設(shè)計(jì)基礎(chǔ)教程_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/15/fce6cfb4-ebed-45fc-ad1d-9aff0e2a3bfb/fce6cfb4-ebed-45fc-ad1d-9aff0e2a3bfb2.gif)
![譚浩強(qiáng)_C語言程序設(shè)計(jì)基礎(chǔ)教程_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/15/fce6cfb4-ebed-45fc-ad1d-9aff0e2a3bfb/fce6cfb4-ebed-45fc-ad1d-9aff0e2a3bfb3.gif)
![譚浩強(qiáng)_C語言程序設(shè)計(jì)基礎(chǔ)教程_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/15/fce6cfb4-ebed-45fc-ad1d-9aff0e2a3bfb/fce6cfb4-ebed-45fc-ad1d-9aff0e2a3bfb4.gif)
![譚浩強(qiáng)_C語言程序設(shè)計(jì)基礎(chǔ)教程_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/15/fce6cfb4-ebed-45fc-ad1d-9aff0e2a3bfb/fce6cfb4-ebed-45fc-ad1d-9aff0e2a3bfb5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第一章l主要內(nèi)容主要內(nèi)容1.1 1.1 計(jì)算機(jī)與程序、程序設(shè)計(jì)語言計(jì)算機(jī)與程序、程序設(shè)計(jì)語言1.2 1.2 語言出現(xiàn)的歷史背景語言出現(xiàn)的歷史背景1.3 1.3 語言的特點(diǎn)語言的特點(diǎn)1.4 1.4 簡單的簡單的C C語言程序語言程序1.5 1.5 運(yùn)行程序的步驟和方法運(yùn)行程序的步驟和方法 1.1計(jì)算機(jī)與程序、程序設(shè)計(jì)語言v計(jì)算機(jī)與程序:要讓計(jì)算機(jī)按照人們的愿望工作,必須由人們事先編制好程序,并輸入到計(jì)算機(jī),讓計(jì)算機(jī)執(zhí)行程序才能產(chǎn)生相應(yīng)的操作結(jié)果。v程序設(shè)計(jì)語言:一個型號機(jī)器語言的指令的集合稱為該計(jì)算機(jī)的機(jī)器語言;用一些特定的“助記符號”代替0和1來表示指令的程序設(shè)計(jì)語言稱為匯編語言;接近于人們習(xí)
2、慣使用的自然語言(英文)和數(shù)學(xué)語言稱為“高級語言”。1.2 語言出現(xiàn)的歷史背景vC語言是國際上廣泛流行的高級語言。vC語言是在B語言的基礎(chǔ)上發(fā)展起來的。vB (BCPL)語言是1970年由美國貝爾實(shí)驗(yàn)室設(shè)計(jì)的, 并用于編寫了第一個UNIX操作系統(tǒng)。優(yōu)點(diǎn):簡單,接近硬件,缺點(diǎn):過于簡單,功能有限。 v1972年至1973年貝爾實(shí)驗(yàn)室的D.M.Ritchie 在B語言的基礎(chǔ)上設(shè)計(jì)出了C語言,并用之改寫了原來用匯編編寫的UNIX。后來,C語言多次做了改進(jìn),但主要還是在貝爾實(shí)驗(yàn)室使用。 1.2語言出現(xiàn)的歷史背景v1977年出現(xiàn)了可移植C語言編譯程序 ,推動了UNIX在各種機(jī)器上實(shí)現(xiàn) ,C語言也迅速得到
3、推廣,其發(fā)展相輔相成。v1978年在Brian W.Kernighan和Dennis M.Ritchie 合著的影響深遠(yuǎn)的名著The C Programming Language中介紹的C語言成為后來廣泛使用的C語言版本的基礎(chǔ) ,被稱為標(biāo)準(zhǔn)C。v1978年以后,C語言先后移植到大、中、小、微型計(jì)算機(jī)上,風(fēng)靡世界,成為最廣泛的幾種計(jì)算機(jī)語言之一。 1.2語言出現(xiàn)的歷史背景v1983年,美國國家標(biāo)準(zhǔn)化協(xié)會(ANSI)根據(jù)C語言各種版本對C的發(fā)展和擴(kuò)充,制定了新的標(biāo)準(zhǔn)ANSI C ,比標(biāo)準(zhǔn)C有了很大的發(fā)展。v1987年,ANSI公布了新標(biāo)準(zhǔn)87 ANSI C。v1989年,ANSI又公布了一個新的C
4、語言標(biāo)準(zhǔn)C89v1990年,ISO接受C89作為國際標(biāo)準(zhǔn)通常稱為C90v1999年,ISO對C語言標(biāo)準(zhǔn)進(jìn)行修訂,在基本保留原來的C語言特征的基礎(chǔ)上,增加了一些面向?qū)ο蟮奶卣?,簡稱為 C99。 v目前流行的C語言編譯系統(tǒng)大多是以C89為基礎(chǔ)進(jìn)行開發(fā)的。1.3 語言的特點(diǎn)(1)語言簡潔、緊湊,使用方便、靈活。 32個關(guān)鍵字、9種控制語句,程序形式自由(2)運(yùn)算符豐富。34種運(yùn)算符 (3)數(shù)據(jù)類型豐富,提供整型、浮點(diǎn)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等,能用來實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)(如鏈表、樹、棧等)的運(yùn)算。(4)C語言是完全模塊化和結(jié)構(gòu)化的語言。 (5)語法限制不太嚴(yán)格,程序設(shè)
5、計(jì)自由度大。 1.3 語言的特點(diǎn)(6)允許直接訪問物理地址,可直接對硬件進(jìn)行操作。兼有高級和低級語言的功能 。(7)目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。只比匯編程序生成的目標(biāo)代碼效率低10-20%。(8)用C語言編寫的程序可移植性好。基本上不做修改就能用于各種型號的計(jì)算機(jī)和各種操作系統(tǒng)。 1.4 簡單的C語言程序例1.1#include void main( ) printf (This is a C program.n); /*文件包含*/*主函數(shù) */*函數(shù)體開始*/*輸出語句*/*函數(shù)體結(jié)束*/ main-主函數(shù)名, void-函數(shù)類型v每個C程序必須有一個主函數(shù)mainv 是函數(shù)開始和結(jié)束
6、的標(biāo)志,不可省v每個C語句以分號結(jié)束v使用標(biāo)準(zhǔn)庫函數(shù)時應(yīng)在程序開頭一行寫: #include 說明:說明: 本程序的作用是輸出一行信息本程序的作用是輸出一行信息: :This is a C program.This is a C program.例1. 2 求兩數(shù)之和#include #include void main( ) void main( ) / /* *求兩數(shù)之和求兩數(shù)之和* */ / int a,b,sum; int a,b,sum; / /* *聲明,定義變量為整型聲明,定義變量為整型* */ / / /* *以下以下3 3行為行為C C語句語句 * */ / a=123; b
7、=456; a=123; b=456; sum=a+b; sum=a+b; printf(sum is %d printf(sum is %dn,sum);n,sum); /*/表示注釋。注釋只是給人看的,對編譯和運(yùn)行不起作用。所以可以用漢字或英文字符表示,可以出現(xiàn)在一行中的最右側(cè),也可以單獨(dú)成為一行。說明:說明: 輸出一行信息輸出一行信息:sum is 579:sum is 579例1.3 求2個數(shù)中較大者。#include #include void main( ) void main( ) / /* * 主函數(shù)主函數(shù)* */ / int max(int x,int y); int max
8、(int x,int y); / / 對被調(diào)用函數(shù)對被調(diào)用函數(shù)maxmax的聲明的聲明 * */ / int a, b, c; int a, b, c; / /* *定義變量定義變量a a、b b、c c * */ / scanf(scanf(d,d,d,&a,&b); d,&a,&b); / /* *輸入變量輸入變量a a和和b b的值的值* */ / c=max(a,b); c=max(a,b); / /* *調(diào)用調(diào)用maxmax函數(shù)函數(shù), ,將得到的值賦給將得到的值賦給c c * */ / printf(max=printf(max=dn,c); dn,c); / /* *輸出輸出c c
9、的值的值* */ / v程序運(yùn)行情況如下程序運(yùn)行情況如下:v8,5 8,5 ( (輸入輸入8 8和和5 5賦給賦給a a和和b)b)vmax=8 (max=8 (輸出輸出c c的值的值) )int max(int x, int y) int z; if (xy) z=x; else z=y; return (z); max(int x, int y) max(max(a a, ,b b);); 本程序包括main和被調(diào)用函數(shù)max兩個函數(shù)。max函數(shù)的作用是將x和y中較大者的值賦給變量z。return語句將z的值返回給主調(diào)函數(shù)main。 1.4 簡單的C語言程序(1) C程序是由函數(shù)構(gòu)成的。
10、這使得程序容易實(shí)現(xiàn)模塊化。 (2) 一個函數(shù)由兩部分組成: 函數(shù)的首部:例1.3中的max函數(shù)首部 int max(int x,int y ) 函數(shù)體:花括號內(nèi)的部分。若一個函數(shù)有多個花括號,則最外層的一對花括號為函數(shù)體的范圍。 函數(shù)體包括兩部分 :聲明部分:int a,b,c; 可缺省執(zhí)行部分:由若干個語句組成??扇笔?.4 簡單的C語言程序小結(jié):小結(jié):(3) C程序總是從main函數(shù)開始執(zhí)行的,與main函數(shù)的位置無關(guān)。(4) C程序書寫格式自由,一行內(nèi)可以寫幾個語句, 一個語句可以分寫在多行上,C程序沒有行號。(5) 每個語句和數(shù)據(jù)聲明的最后必須有一個分號。分號是C語句的必要組成部分。即
11、使是程序中最后一個語句也應(yīng)包含分號 。 1.4 簡單的C語言程序小結(jié):小結(jié):(6) C語言本身沒有輸入輸出語句。輸入和輸出的操作是由庫函數(shù)scanf和printf等函數(shù)來完成的。C對輸入輸出實(shí)行“函數(shù)化”。(7) 可以用 /*/ 對C程序中的任何一行或數(shù)行做注釋。一個好的、有使用價值的源程序都應(yīng)當(dāng)加上必要的注釋,以增加程序的可讀性。 1.5 運(yùn)行程序的步驟和方法1.5.1 運(yùn)行程序的步驟上機(jī)輸入與編輯源程序?qū)υ闯绦蜻M(jìn)行編譯與庫函數(shù)連接運(yùn)行目標(biāo)程序 1.5 運(yùn)行程序的步驟和方法1.5.2上機(jī)運(yùn)行程序的方法l目前使用的大多數(shù)C編譯系統(tǒng)都是集成環(huán)境(IDE)的??梢杂貌煌木幾g系統(tǒng)對C程序進(jìn)行操作l
12、常用的有Turbo C 2.0、Turbo C+ 3.0、Visual C+6.0等 l前一段時間,Turbo C 2.0用得比較多,但Turbo C 2.0是用于DOS環(huán)境的,不能用鼠標(biāo)進(jìn)行操作,很不方便,所以今年來不少人改為用Turbo C+ 3.0或Visual C+ 6.0對C程序進(jìn)行編譯 第二章l主要內(nèi)容主要內(nèi)容2.1 C2.1 C語言的數(shù)據(jù)類型語言的數(shù)據(jù)類型2.2 2.2 常量與變量常量與變量2.3 2.3 整型數(shù)據(jù)整型數(shù)據(jù)2.4 2.4 浮點(diǎn)型數(shù)據(jù)浮點(diǎn)型數(shù)據(jù)2.5 2.5 字符型數(shù)據(jù)字符型數(shù)據(jù)2.6 2.6 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算 2.7 2.7 算
13、術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2.8 2.8 逗號運(yùn)算符和逗號表達(dá)式逗號運(yùn)算符和逗號表達(dá)式 2.1 C的數(shù)據(jù)類型C語言提供了以下一些數(shù)據(jù)類型。 2.2 常量與變量 2.2.1 2.2.1 常量常量v在程序運(yùn)行過程中,其值不能被改變的量稱為常量v常量區(qū)分為不同的類型:整型 100,125,-100,0實(shí)型 3.14 , 0.125,-3.789字符型 a, b,2符號常量符號常量為了使用方便,可用一個符號名來代表一個常量。例2.1在程序中使用符號常量 #define PRICE 30#define PRICE 30#include #include void main ( )voi
14、d main ( ) int num, total; int num, total; num=10; num=10; total=num total=num * * PRICE; PRICE; printf(total=%dn,total); printf(total=%dn,total); 用一個標(biāo)識符代表一個常量。符號常量的值在其作用域內(nèi)不能改變,也不能再被賦值。 運(yùn)行結(jié)果:運(yùn)行結(jié)果: total=300total=300 程序中用#define命令行定義PRICE代表常量30,此后凡在本文件中出現(xiàn)的PRICE都代表30,可以和常量一樣進(jìn)行運(yùn)算如再用賦值語句給PRICE賦值是錯的PRICE
15、=40;/* 錯誤,不能給符號常量賦不能對符號常量指定類型int PRICE; /* 錯誤,PRICE不是變量,不能指 定類型 */ 2.2 常量與變量 2.2.2 2.2.2變量變量v變量代表內(nèi)存中具有特定屬性的一個存儲單元,它用來存放數(shù)據(jù),也就是變量的值,在程序運(yùn)行期間,這些值是可以改變的。v變量名實(shí)際上是一個以一個名字對應(yīng)代表一個地址,在對程序編譯連接時由編譯系統(tǒng)給每一個變量名分配對應(yīng)的內(nèi)存地址。從變量中取值,實(shí)際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲單元中讀取數(shù)據(jù)。2.2 常量與變量 2.2.22.2.2標(biāo)識符標(biāo)識符v變量的名字必須符合C語言對標(biāo)識符標(biāo)識符的規(guī)定。v用來標(biāo)識對象名字
16、(包括變量、函數(shù)、數(shù)組、類型等)的有效字符序列 。vC語言中,有3類標(biāo)識符:關(guān)鍵字,系統(tǒng)預(yù)定義的標(biāo)識符 ,用戶標(biāo)識符。 C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。 2.2 常量與變量 變量命名的規(guī)定:變量的名字必須符合C語言對標(biāo)示符得規(guī)定 例:例:sum,_total, month, Student_name, lotus_1_2_,BASIC, li_ling M.D.John, ¥123,3D64,ab 2.2 常量與變量v編譯系統(tǒng)將大寫字母和小寫字母認(rèn)為是兩個不同的字符。 v建議變量名的長度最好不要超過8個字符。v在選擇變量名和其它標(biāo)識符時,應(yīng)
17、注意做到“見名知意”,即選有含意的英文單詞 (或其縮寫)作標(biāo)識符。v要求對所有用到的變量作強(qiáng)制定義,也就是“先定義,后使用” 。 2.3 整型數(shù)據(jù)2.3.12.3.1整型常量的表示形式整型常量的表示形式 整型常量即整常數(shù)。在語言中,整常數(shù)可用以下三種形式表示:(1)十進(jìn)制整數(shù)。 如:如:123, -456,4。(2)八進(jìn)制整數(shù)。以0頭的數(shù)是八進(jìn)制數(shù)。 如:如:0123表示八進(jìn)制數(shù)123,等于十進(jìn)制數(shù)83,-011表示八進(jìn)制數(shù)-11,即十進(jìn)制數(shù)-9。 2.3 整型數(shù)據(jù)2.3.12.3.1整型常量的表示形式整型常量的表示形式(3)十六進(jìn)制整數(shù)。以0 x開頭的數(shù)是16進(jìn)制數(shù)。 如:如:0 x123,
18、代表16進(jìn)制數(shù)123,等于十進(jìn)制數(shù) 291。 -0 x12等于十進(jìn)制數(shù)10。 2.3.22.3.2整型變量整型變量v整型變量用來存放整數(shù)。整型變量的基本類型符為int。vC語言中有以下3類整型變量 :基本整型,短整型,長整型。 2.3 整型數(shù)據(jù) 2.3.2整型變量整型變量 ANSI C標(biāo)準(zhǔn)沒有具體規(guī)定以上各類數(shù)據(jù)所占內(nèi)存的字節(jié)數(shù)而是由各計(jì)算機(jī)系統(tǒng)自行決定。 Turbo C中,int型和short型數(shù)據(jù)都是2個字節(jié),即16個二進(jìn)制位。long型數(shù)據(jù)是4個字節(jié),32位。而VC+則給short型數(shù)據(jù)分配2個字節(jié),16位,int和long型數(shù)據(jù)都是4個字節(jié),32位 。 2.3 整型數(shù)據(jù) 2.3.2整型
19、變量整型變量一般情況下,存儲整數(shù)時存儲單元中的第一個二進(jìn)位用來代表數(shù)值符號,而在實(shí)際應(yīng)用中,變量的值常常是正的 ,所以存儲單元全部用來存儲數(shù)值本身,此定義無符號整數(shù)。所以歸納起來,在C語言中,可以定義和使用6種整型變量共六種共六種有符號基本整型有符號短整型有符號長整型無符號基本整型無符號短整型無符號長整型(signed)int (signed)short (int )(signed) long (int)unsigned intunsigned short (int)unsigned long (int) 注意:注意:括號表示其中的內(nèi)容是可選的. 2.3 整型數(shù)據(jù) 2.3.2整型變量整型變量v
20、整數(shù)類型的有關(guān)數(shù)據(jù):例2.2 整型變量的定義與使用#include #include void main()() int a,b,c,d; /*指定、為整指定、為整型變量型變量* unsigned ; *指定為無符號整型變量指定為無符號整型變量* 12;-24;10; ; printf(,);,); 可以看到不同種類的整型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算可以看到不同種類的整型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算 運(yùn)行結(jié)果:運(yùn)行結(jié)果: , 2.3 整型數(shù)據(jù) 2.3.3整型數(shù)據(jù)在內(nèi)存中的存放形式整型數(shù)據(jù)在內(nèi)存中的存放形式 數(shù)據(jù)在內(nèi)存中以二進(jìn)制形式存放。數(shù)據(jù)在內(nèi)存中以二進(jìn)制形式存放。 如如: : int i; /int i;
21、/* * 定義為整型變量定義為整型變量 * */ / i=10; / i=10; /* * 給給i i賦以整數(shù)賦以整數(shù)10 10 * */ / i i (a) (b)000000000000101010例2.3 整型數(shù)據(jù)的溢出#include #include void main()void main()int a,b; int a,b; a=32767; a=32767; b=a+1; b=a+1; printf(“%d,%dn”,a,b); printf(“%d,%dn”,a,b); 數(shù)值是以補(bǔ)碼表示的。一個整型變量只能容納數(shù)值是以補(bǔ)碼表示的。一個整型變量只能容納-32768-327683
22、276732767范圍內(nèi)的數(shù),無法表示大于范圍內(nèi)的數(shù),無法表示大于3276732767或小于或小于-32768-32768的數(shù)。遇此情況就的數(shù)。遇此情況就發(fā)生發(fā)生“溢出溢出”。運(yùn)行結(jié)果:運(yùn)行結(jié)果: 32767,-3276832767,-32768 如果系統(tǒng)給一個整型變量分配2個字節(jié),則變量的最大允許值為32767,若超出最大職則出現(xiàn)溢出現(xiàn)象。 2.4 浮點(diǎn)型數(shù)據(jù) 2.4.12.4.1浮點(diǎn)型常量的表示形式浮點(diǎn)型常量的表示形式兩種表兩種表示形式示形式十進(jìn)制小數(shù)十進(jìn)制小數(shù)指數(shù)指數(shù)0.1230.1233 3e-3e-3注意注意: :字母字母e(e(或或E)E)之前必須有數(shù)字,且之前必須有數(shù)字,且e e
23、后面的指數(shù)必須為整數(shù)后面的指數(shù)必須為整數(shù) 2.4 浮點(diǎn)型數(shù)據(jù) 2.4.2 2.4.2 浮點(diǎn)型變量浮點(diǎn)型變量 1 1)浮點(diǎn)型變量分為單精度()浮點(diǎn)型變量分為單精度(floatfloat型)、雙精度(型)、雙精度(doubledouble型)和長雙精型)和長雙精度型(度型(long doublelong double)三類形式。)三類形式。 2.4 浮點(diǎn)型數(shù)據(jù) 2.4.2 2.4.2 浮點(diǎn)型變量浮點(diǎn)型變量 2)浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式:一個浮點(diǎn)型數(shù)據(jù)一般在內(nèi)存中占4個字節(jié)(32位)。與整型數(shù)據(jù)的存儲方式不同,浮點(diǎn)型數(shù)據(jù)是按照指數(shù)形式存儲的。系統(tǒng)把一個浮點(diǎn)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。
24、指數(shù)部分采用規(guī)范化的指數(shù)形式。3)浮點(diǎn)型數(shù)據(jù)的舍入誤差:由于浮點(diǎn)型變量是由有限的存儲單元組成的,因此能提供的有效數(shù)字總是有限的。在有效位以外的數(shù)字將被舍去。由此可能會產(chǎn)生一些誤差例2.4 浮點(diǎn)型數(shù)據(jù)的舍入誤差#include #include void main()void main()float a,b;float a,b; a = 123456.789e5; a = 123456.789e5; b = a + 20 ; b = a + 20 ; printf(“%fn”,b); printf(“%fn”,b); 一個浮點(diǎn)型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是無意義的,并不準(zhǔn)確
25、地表示該數(shù)。應(yīng)當(dāng)避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減,否則就會“丟失”小的數(shù)運(yùn)行結(jié)果:運(yùn)行結(jié)果: 123456.789e5123456.789e5 2.4.2 2.4.2 浮點(diǎn)型變量浮點(diǎn)型變量.5 字符型數(shù)據(jù) .5.1 字符常量(1)用單引號包含的一個字符是字符型常量(2)只能包含一個字符a a, ,A A, , 1 1abcabc、“a a” 2.5 字符型數(shù)據(jù) .5.1 字符常量字符常量 有些以有些以“ ”開頭的特殊字符稱為轉(zhuǎn)義字符開頭的特殊字符稱為轉(zhuǎn)義字符 含含 義義 ASCII代碼代碼 換行,將當(dāng)前位置移到下一行開頭換行,將當(dāng)前位置移到下一行開頭 10 水平制表(跳到下一個水
26、平制表(跳到下一個Tab位置)位置) 9 退格,將當(dāng)前位置移到前一列退格,將當(dāng)前位置移到前一列 8 回車,將當(dāng)前位置移到本行開頭回車,將當(dāng)前位置移到本行開頭 13 換頁,將當(dāng)前位置移到下頁開頭換頁,將當(dāng)前位置移到下頁開頭 12 a 發(fā)出鈴聲發(fā)出鈴聲 7 代表一個反斜杠字符代表一個反斜杠字符“”92 代表一個單撇號字符代表一個單撇號字符 39 代表一個雙撇號字符代表一個雙撇號字符34 到位八進(jìn)制數(shù)所代表的字符到位八進(jìn)制數(shù)所代表的字符 到位十六進(jìn)制數(shù)所代表的字符到位十六進(jìn)制數(shù)所代表的字符 例2.5 轉(zhuǎn)義字符的使用#include #include void void ()() ( ab ct ab
27、 ct derftgnderftgn); ; printf(htibbj kn); printf(htibbj kn);v打印機(jī)上的顯示結(jié)果:打印機(jī)上的顯示結(jié)果: fab c gde h jikv顯示屏上的運(yùn)行結(jié)果:顯示屏上的運(yùn)行結(jié)果: f gde j k 2.5 字符型數(shù)據(jù) 2.5.22.5.2字符變量字符變量v字符型變量用來存放字符常量,注意只能放一個字字符型變量用來存放字符常量,注意只能放一個字符。符。v字符變量的定義形式如下:字符變量的定義形式如下:char c1,c2;char c1,c2;v在本函數(shù)中可以用下面語句對在本函數(shù)中可以用下面語句對c1,c2c1,c2賦值:賦值: c1c
28、1a a;c2c2 b b ;v一個字符變量在內(nèi)存中占一個字節(jié)。一個字符變量在內(nèi)存中占一個字節(jié)。 2.5 字符型數(shù)據(jù) 2.5.3 2.5.3 字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法v一個字符常量存放到一個字符變量中,實(shí)際上并不是把該字符的字型放到一個字符常量存放到一個字符變量中,實(shí)際上并不是把該字符的字型放到內(nèi)存中去,而是將該字符的相應(yīng)的內(nèi)存中去,而是將該字符的相應(yīng)的ASCIIASCII代碼放到存儲單元中。這樣使字符代碼放到存儲單元中。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。注意注意: : 一個字符數(shù)據(jù)既可以以字符形式輸一個字符
29、數(shù)據(jù)既可以以字符形式輸, ,也可以以整數(shù)形式輸出以字符也可以以整數(shù)形式輸出以字符形式輸出時形式輸出時, ,系統(tǒng)先將存儲單元中的系統(tǒng)先將存儲單元中的I I碼轉(zhuǎn)換成相應(yīng)字碼轉(zhuǎn)換成相應(yīng)字符,符, 然后輸出。然后輸出。 以整數(shù)形式輸出時,直接將碼作以整數(shù)形式輸出時,直接將碼作為整數(shù)輸出。也可以對字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,為整數(shù)輸出。也可以對字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算, 此時相當(dāng)于對此時相當(dāng)于對它們的碼進(jìn)行算術(shù)運(yùn)算。它們的碼進(jìn)行算術(shù)運(yùn)算。 例2.6 向字符變量賦予整數(shù)。 #include #include void main()void main() char c1,c2; char c1,c2; c1=97;
30、c1=97; c2=98; c2=98; printf(“%c %cn”,c1,c2); printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); printf(“%d %dn”,c1,c2); 在第在第4 4和第和第5 5行中,將整數(shù)行中,將整數(shù)9797和和9898分別賦給分別賦給c1c1和和c2c2,它的作用相當(dāng)于,它的作用相當(dāng)于以下兩個賦值語句:以下兩個賦值語句:c1c1;c2;c2; 因?yàn)橐驗(yàn)閍a和和bb的的ASCIIASCII碼為碼為9797和和9898v運(yùn)行結(jié)果:運(yùn)行結(jié)果: 97 9897 98例2.7 大小寫字母的轉(zhuǎn)換 #include #i
31、nclude void main()void main() char c1,c2 char c1,c2; c1=a;c1=a; c2=b; c2=b;c1=c1-32;c1=c1-32;c2=c2-32;c2=c2-32; printf(“ printf(“c c cc,c1,c2c1,c2);); 程序的作用是將兩個小寫字母程序的作用是將兩個小寫字母a a和和b b轉(zhuǎn)換成大寫字母轉(zhuǎn)換成大寫字母A A和和B B。從。從代碼表中可以看到每一個小寫字母比它相應(yīng)的大寫字母代碼表中可以看到每一個小寫字母比它相應(yīng)的大寫字母的的ASCIIASCII碼大碼大3232。語言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算。
32、語言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算。 v運(yùn)行結(jié)果:運(yùn)行結(jié)果: 2.5 字符型數(shù)據(jù) 2.5.3 字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法 有些系統(tǒng)(如有些系統(tǒng)(如Turbo C,VC+Turbo C,VC+)將字符變量定義為)將字符變量定義為signed charsigned char型。其存儲單元中的最高位作為符號位,型。其存儲單元中的最高位作為符號位,它的取值范圍是它的取值范圍是-128-128127127。如果在字符變量中存放。如果在字符變量中存放一個一個ASCIIASCII碼為碼為0 0127127間的字符,由于字節(jié)中最高位間的字符,由于字節(jié)中最高
33、位為為0 0,因此用,因此用%d%d輸出字符變量時,輸出的是一個正整輸出字符變量時,輸出的是一個正整數(shù)。如果在字符變量中存放一個數(shù)。如果在字符變量中存放一個ASCIIASCII碼為碼為128128255255間的字符,由于在字節(jié)中最高位為間的字符,由于在字節(jié)中最高位為1 1,用,用%d%d格式符輸格式符輸出時,就會得到一個負(fù)整數(shù)。出時,就會得到一個負(fù)整數(shù)。 2.5 字符型數(shù)據(jù) 2.5.4 2.5.4 字符串常量字符串常量v字符串常量是一對雙撇號括起來的字符序列字符串常量是一對雙撇號括起來的字符序列. .v合法的字符串常量合法的字符串常量: :“How do you do.How do you
34、do.”, , “CHINACHINA”, “a a” , “$123.45$123.45”v可以輸出一個字符串,如可以輸出一個字符串,如printf(printf(“How do you do.How do you do.”) ); 2.5 字符型數(shù)據(jù) 2.5.4 字符串常量字符串常量 是字符常量, “a”是字符串常量,二者不同。 如:如:假設(shè)被指定為字符變量 :char c c= a; “a” ;c “CHINA”; 結(jié)論:結(jié)論:不能把一個字符串常量賦給一個字符變量。v規(guī)定:在每一個字符串常量的結(jié)尾加一個規(guī)定:在每一個字符串常量的結(jié)尾加一個 “字符字符串結(jié)束標(biāo)志串結(jié)束標(biāo)志”,以便系統(tǒng)據(jù)此判
35、斷字符串是否結(jié)束。,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。規(guī)定以字符規(guī)定以字符作為字符串結(jié)束標(biāo)志。作為字符串結(jié)束標(biāo)志。 如:如:如果有一個字符串常量” ,實(shí)際上在內(nèi)存中是:CHINA0 它占內(nèi)存單元不是個字符,而是個字符,最后一個字符為。但在輸出時不輸出。 2.5 字符型數(shù)據(jù) 2.5.4 字符串常量字符串常量 2.6 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算 混合運(yùn)算:整型(包括int,short,long)、浮點(diǎn)型(包括float,double)可以混合運(yùn)算。在進(jìn)行運(yùn)算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算.說明: 這種類型轉(zhuǎn)換是由系統(tǒng)自動進(jìn)行的。 2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 1. 1. 語言語
36、言的運(yùn)算符有以下幾類:的運(yùn)算符有以下幾類:算術(shù)運(yùn)算符 (+ - * / %)關(guān)系運(yùn)算符 (?。┻壿嬤\(yùn)算符 (!|)位運(yùn)算符 ( |)賦值運(yùn)算符 (及其擴(kuò)展賦值運(yùn)算符)條件運(yùn)算符 (?:)逗號運(yùn)算符 (,) 2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2.7.1 C語言運(yùn)算符和語言運(yùn)算符和C算術(shù)表達(dá)式簡介算術(shù)表達(dá)式簡介(8)指針運(yùn)算符 (*和)(9)求字節(jié)數(shù)運(yùn)算符()(10)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符( (類型) )(11)分量運(yùn)算符(-)(12)下標(biāo)運(yùn)算符()(13)其他 (如函數(shù)調(diào)用運(yùn)算符() 2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2.7.1 C語言運(yùn)算符和語言運(yùn)算符和C算術(shù)表達(dá)式簡介算術(shù)表達(dá)式簡介2. C語言的表達(dá)
37、式有以下幾類:語言的表達(dá)式有以下幾類:(1)算術(shù)表達(dá)式:如2+6.7*3.5+sin(0.5)(2)關(guān)系表達(dá)式:如x0,y0 & y0 (表示x0與y0同時成立,&是邏輯運(yùn)算符,代表“與”)(4)賦值表達(dá)式:如a=5.6(5)逗號表達(dá)式:如a=3,y=4,z=8 2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 1. 1. 基本的算術(shù)運(yùn)算符基本的算術(shù)運(yùn)算符: : (加法運(yùn)算符,或正值運(yùn)算符。如:、) (減法運(yùn)算符,或負(fù)值運(yùn)算符。如:、)* * (乘法運(yùn)算符。如:*) (除法運(yùn)算符。兩個整數(shù)相除的結(jié)果為整數(shù)兩個整數(shù)相除的結(jié)果為整數(shù),如:結(jié)果為) (模運(yùn)算符,或稱求余運(yùn)算符,兩側(cè)均應(yīng)為整型 數(shù)據(jù),如:的值為)。 2
38、.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2. 2. 算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級與結(jié)合性算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級與結(jié)合性 用算術(shù)運(yùn)算符和括號將運(yùn)算對象(也稱操作數(shù))連接起來的、符合語法規(guī)則的式子,稱為算術(shù)表達(dá)式算術(shù)表達(dá)式。運(yùn)算對象包括常量、變量、函數(shù)等。 例如例如: : *.5a 是一個合法的表達(dá)式v語言規(guī)定了運(yùn)算符的優(yōu)先級和結(jié)合性。 在表達(dá)式求值時,先按運(yùn)算符的優(yōu)先級別高低次序執(zhí)行,例如先乘除后加減。 v規(guī)定了各種運(yùn)算符的結(jié)合方向(結(jié)合性) 算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笾劣摇保聪茸蠛笥?。 2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 3. 3. 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符強(qiáng)制類型轉(zhuǎn)換運(yùn)算
39、符 可以利用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個表達(dá)式轉(zhuǎn)換成所需類型。 一般形式:(類型名)(表達(dá)式)說明: 表達(dá)式應(yīng)該用括號括起來。 在強(qiáng)制類型轉(zhuǎn)換時,得到一個所需類型的中間變量,原來變量的類型未發(fā)生變化。例2.8 強(qiáng)制類型轉(zhuǎn)換。 #include #include void main()void main() float x;float x; int i; int i; x=3.6; x=3.6; i=(int)x; i=(int)x; printf(x=%f, printf(x=%f, i=%dn,x,i);i=%dn,x,i); 有兩種類型轉(zhuǎn)換,一種是在運(yùn)算時不必用戶指定,系統(tǒng)自動進(jìn)行的類型轉(zhuǎn)換,
40、如3+6.5。第二種是強(qiáng)制類型轉(zhuǎn)換。當(dāng)自動類型轉(zhuǎn)換不能實(shí)現(xiàn)目的時,可以用強(qiáng)制類型轉(zhuǎn)換。v運(yùn)行結(jié)果:運(yùn)行結(jié)果: x3.600000, i=3 2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2.7.2 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 4. 4. 自增、自減運(yùn)算符自增、自減運(yùn)算符 作用是使變量的值增或減如如: v,(在使用之前,先使的值加 (減)v,(在使用之后,使的值加( 減) 2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2.7.2 算術(shù)運(yùn)算符和算術(shù)表達(dá)式i+i+與與+i+i的區(qū)別:的區(qū)別: 是先執(zhí)行后,再使用的值; 是先使用的值后,再執(zhí)行。例如:例如: ; i的值先變成4, 再賦給,j的值為 ; 先將 i的值3賦給,的值為,然后
41、變?yōu)?2.7 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2.7.2 算術(shù)運(yùn)算符和算術(shù)表達(dá)式注意:注意: (1)自增運(yùn)算符(),自減運(yùn)算符(),只能用于變量,而不能用于常量或表達(dá)式, (2)和的結(jié)合方向是“自右至左”。 (3)自增(減)運(yùn)算符常用于循環(huán)語句中使循環(huán)變 量自動加。也用于指針變量,使指針指向下一個地址。 (4)使用和時 ,為避免二義性,最好采取大家都能理解的寫法,可以加一些“不必要”的括號,如(i+)+j。 2.8 逗號運(yùn)算符和逗號表達(dá)式逗號運(yùn)算符逗號運(yùn)算符: :將兩個表達(dá)式連接起來,又稱為“順序求值運(yùn)算符”。 如:如:5, 一般形式一般形式: : 表達(dá)式,表達(dá)式表達(dá)式,表達(dá)式求解過程:求解過程: 先
42、求解表達(dá)式,再求解表達(dá)式。整個逗號表達(dá)式的值是表達(dá)式的值。 逗號表達(dá)式 的值為14 2.8 逗號運(yùn)算符和逗號表達(dá)式例:例:逗號表達(dá)式*5,* 分析分析: :賦值運(yùn)算符的優(yōu)先級別高于逗號運(yùn)算符, 因此應(yīng)先求解*5。的值為5,然后求解*,得。整個逗號表達(dá)式的值為。 一個逗號表達(dá)式又可以與另一個表達(dá)式組一個逗號表達(dá)式又可以與另一個表達(dá)式組成一個新的逗號表達(dá)式。成一個新的逗號表達(dá)式。 如如: :(*,*),a+5 先計(jì)算出的值等于,再進(jìn)行*的運(yùn)算得60(但值未變,仍為15),再進(jìn)行得,即整個表達(dá)式的值為。 2.8 逗號運(yùn)算符和逗號表達(dá)式 逗號表達(dá)式的一般形式可以擴(kuò)展為 表達(dá)式,表達(dá)式,表達(dá)式,表達(dá)式,
43、表達(dá)式,表達(dá)式,表達(dá)式,表達(dá)式 它的值為表達(dá)式的值。 逗號運(yùn)算符是所有運(yùn)算符中級別最低的例例: : (,*) ,*3賦值表達(dá)式,將一個逗號表達(dá)式的值賦給,的值等于 逗號表達(dá)式,包括一個賦值表達(dá)式和一個算術(shù)表達(dá)式,的值為,整個逗號表達(dá)式的值為18。 2.8 逗號運(yùn)算符和逗號表達(dá)式注意注意: :并不是任何地方出現(xiàn)的逗號都是作為逗號運(yùn)算符。例如函數(shù)參數(shù)也是用逗號來間隔的。 如如: printf(“%d,%d,%d”,a,b,c);“,”并不是一個逗號表達(dá)式,它是printf函數(shù)的3個參數(shù)printf(“%d,%d,%d”,(a,b,c),b,c) “(,)”是一個逗號表達(dá)式,它的值等于的值。 第三章
44、l 主要內(nèi)容主要內(nèi)容3.1 3.1 程序的三種基本結(jié)構(gòu)程序的三種基本結(jié)構(gòu)3.2 C3.2 C語句概述語句概述3.3 3.3 賦值表達(dá)式和賦值語句賦值表達(dá)式和賦值語句3.4 3.4 數(shù)據(jù)輸入輸出的概念及在數(shù)據(jù)輸入輸出的概念及在C C語言中的實(shí)現(xiàn)語言中的實(shí)現(xiàn)3.5 3.5 字符數(shù)據(jù)的輸入輸出字符數(shù)據(jù)的輸入輸出3.6 3.6 簡單的格式輸入與輸出簡單的格式輸入與輸出3.7 3.7 較復(fù)雜的輸入輸出格式控制較復(fù)雜的輸入輸出格式控制3.8 3.8 順序結(jié)構(gòu)程序設(shè)計(jì)舉例順序結(jié)構(gòu)程序設(shè)計(jì)舉例3.1 程序的三種基本結(jié)構(gòu)v一個良好的程序由以下三種基本結(jié)構(gòu)組成: (1) 順序結(jié)構(gòu):各操作步驟順序執(zhí)行,是一種最簡單
45、的基本結(jié)構(gòu)。 3.2 C語句概述C程序源程序文件1源程序文件2預(yù)處理命令數(shù)據(jù)聲明函數(shù)1函數(shù)首部函數(shù)體數(shù)據(jù)聲明執(zhí)行語句函數(shù)n源程序文件nC程序的結(jié)構(gòu):程序的結(jié)構(gòu): 3.2 C語句概述 v一個c程序可以有若干個源程序文件組成v一個源文件可以有若干個函數(shù)和預(yù)處理命令以及全局變量聲明部分組成v一個函數(shù)有函數(shù)首部和函數(shù)體組成v函數(shù)體由數(shù)據(jù)聲明和執(zhí)行語句組成vC語句分為5類類控制語句控制語句函數(shù)調(diào)用語句函數(shù)調(diào)用語句表達(dá)式語句表達(dá)式語句空語句空語句復(fù)合語句復(fù)合語句 3.2 C語句概述 (一)控制語句 完成一定的控制功能 1 if() else 條件條件語句語句 6 break 中止語句中止語句 2 for(
46、) 循環(huán)循環(huán)語句語句 7 switch() 多分支選擇語句多分支選擇語句 3 while()循環(huán)循環(huán)語句語句 8 return 返回語句返回語句 4 do while();循環(huán)循環(huán)語句語句 9 goto 轉(zhuǎn)向語句轉(zhuǎn)向語句 5 continue 結(jié)束本次循環(huán)語句結(jié)束本次循環(huán)語句 3.2 C語句概述 (二)函數(shù)調(diào)用語句 由一個函數(shù)調(diào)用加一個分號構(gòu)成 Printf(“This is a C statement.”); 3.2 C語句概述 (三)表達(dá)式語句 由一個表達(dá)式加一個分號構(gòu)成 a = 3 ;分號賦值表達(dá)式表達(dá)式語句 3.2 C語句概述 (四)空語句 只有一個分號的語句 (什么也不做)(什么也不
47、做)v用來做流程的轉(zhuǎn)向點(diǎn)用來做流程的轉(zhuǎn)向點(diǎn)v用來作為循環(huán)語句中的循環(huán)體用來作為循環(huán)語句中的循環(huán)體 3.2 C語句概述 (五)復(fù)合語句 用一對括起來的語句 z=x+y;t=z/100;printf(“%f”,t);注意:注意:復(fù)合語句中最后一個語句中最后的分號不能忽略不寫。復(fù)合語句中最后一個語句中最后的分號不能忽略不寫。 3.3 賦值表達(dá)式和賦值語句 3.3.1 賦值表達(dá)式1.1.賦值運(yùn)算符賦值運(yùn)算符 賦值符號“”就是賦值運(yùn)算符,它的作用是將一個數(shù)據(jù)賦給一個變量。 賦值語句是由賦值表達(dá)式加上一個分號構(gòu)成例:例: “a=3” 把常量賦把常量賦給變量給變量 也可以將一個表達(dá)式的值賦給一個變量 3.3
48、 賦值表達(dá)式和賦值語句 3.3.1 賦值表達(dá)式. .復(fù)合的賦值運(yùn)算符復(fù)合的賦值運(yùn)算符 在賦值符“”之前加上其他運(yùn)算符,可以構(gòu)成復(fù)合的運(yùn)算符。例:例: 等價于 先計(jì)算加,再賦給 3.3 賦值表達(dá)式和賦值語句 3.3.1 賦值表達(dá)式v可以這樣理解: a += b (a += b (其中其中a a為變量,為變量,b b為表達(dá)式為表達(dá)式) )a + = ba + = b(將有下劃線的(將有下劃線的“a+a+”移到移到“= =”右側(cè))右側(cè)) | | a = a + b a = a + b(在(在“= =”左側(cè)補(bǔ)上變量名左側(cè)補(bǔ)上變量名a a) 3.3 賦值表達(dá)式和賦值語句 3.3.1 賦值表達(dá)式v如果是包
49、含若干項(xiàng)的表達(dá)式,則相當(dāng)于它有括號。例:例: x %= y + 3 x %= (y + 3) |_ x = x %(y + 3) (不要錯寫成(不要錯寫成 x = x % y + 3 ) 3.3 賦值表達(dá)式和賦值語句 3.3.1 賦值表達(dá)式v凡是二元(二目)運(yùn)算符,都可以與賦值符一起組合成復(fù)合賦值符。有關(guān)算術(shù)運(yùn)箅的復(fù)合賦值運(yùn)算符有:,*, v語言采用這種復(fù)合運(yùn)算符,一是為了簡化程序,使程序精練,二是為了提高編譯效率,能產(chǎn)生質(zhì)量較高的目標(biāo)代碼。 3.3 賦值表達(dá)式和賦值語句 3.3.1 賦值表達(dá)式3.3.賦值表達(dá)式賦值表達(dá)式 由賦值運(yùn)算符將一個變量和一個表達(dá)式連接起來的式子。v一般形式為:變量變
50、量 賦值運(yùn)算符賦值運(yùn)算符 表達(dá)式表達(dá)式v賦值表達(dá)式的求解過程:先求賦值運(yùn)算符右側(cè)的先求賦值運(yùn)算符右側(cè)的“表達(dá)式表達(dá)式”的值,然后賦給賦值運(yùn)算符左側(cè)的變量。的值,然后賦給賦值運(yùn)算符左側(cè)的變量。v賦值運(yùn)算符左側(cè)的標(biāo)識符稱為“左值” v出現(xiàn)在賦值運(yùn)算符右側(cè)的表達(dá)式稱為“右值” v注意:注意:并不是任何對象都可以作為左值的,表達(dá)式和常變量就不能作為左值。任何左值并不是任何對象都可以作為左值的,表達(dá)式和常變量就不能作為左值。任何左值都可做右值。都可做右值。 3.3 賦值表達(dá)式和賦值語句 3.3.1 賦值表達(dá)式 說明:賦值運(yùn)算符按照“自右而左”的結(jié)合順序,因此,“a=(b=5)”和“a=b=5”等價 v賦
51、值表達(dá)式中的“表達(dá)式”,又可以是一個賦值表達(dá)式。 例:例:a=(b=5) 相當(dāng)于執(zhí)行相當(dāng)于執(zhí)行“b=5”和和“ab”兩兩 個賦值表達(dá)式個賦值表達(dá)式 3.3 賦值表達(dá)式和賦值語句 3.3.1 賦值表達(dá)式 分析賦值表達(dá)式: (a=3*5)=4*3 賦值表達(dá)式為左值右值先執(zhí)行括號內(nèi)的運(yùn)算,將15賦給a,然后執(zhí)行4*3的運(yùn)算,得12,再把12賦給a。最后a的值為12,整個表達(dá)式的值為12。 賦值表達(dá)式作為左值時應(yīng)加括號 3.3 賦值表達(dá)式和賦值語句 3.3.1 賦值表達(dá)式 求解步驟如下求解步驟如下: : 先進(jìn)行先進(jìn)行“* *”的運(yùn)算,的運(yùn)算, 它相當(dāng)于它相當(dāng)于: : * *,a a的值為的值為1441
52、44132132。 再進(jìn)行再進(jìn)行“”的運(yùn)算,相當(dāng)于的運(yùn)算,相當(dāng)于: : =a+(-132)=a+(-132),a a的值為的值為132-132132-132-264-264。v賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符。 3.3 賦值表達(dá)式和賦值語句 3.3.1 賦值表達(dá)式v賦值表達(dá)式作為表達(dá)式的一種,不僅可以出現(xiàn)在賦值語句中,而且可以以表達(dá)式形式出現(xiàn)在其他語句(如輸出語句、循環(huán)語句等)中 。printf(%d,a=b); 3.3 賦值表達(dá)式和賦值語句 3.3.2 賦值過程中的類型轉(zhuǎn)換v如果賦值運(yùn)算符兩側(cè)的類型一致,則直接進(jìn)行賦值。i=6 (假設(shè)i已定義為int型)v如果賦值運(yùn)算符兩側(cè)的類型不一致,
53、但都是數(shù)值型或字符型時,在賦值時要進(jìn)行類型轉(zhuǎn)換。類型轉(zhuǎn)換是系統(tǒng)自動進(jìn)行的。 3.3 賦值表達(dá)式和賦值語句 3.3.2 賦值過程中的類型轉(zhuǎn)換v轉(zhuǎn)換規(guī)則轉(zhuǎn)換規(guī)則: 將浮點(diǎn)型數(shù)據(jù)(包括單、雙精度)賦給整型變量時,先對浮點(diǎn)數(shù)取為整,然后賦予整型變量。 將整型數(shù)據(jù)賦給單、雙精度變量時,數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲到變量中。 將一個double型數(shù)據(jù)賦給float變量時,截取其前面7位有效數(shù)字,存放到float變量的存儲單元(4個字節(jié))中。但應(yīng)注意數(shù)值范圍不能溢出;將一個float型數(shù)據(jù)賦給double變量時,數(shù)值不變,有效位數(shù)擴(kuò)展到16位,在內(nèi)存中以8個字節(jié)存儲。 v轉(zhuǎn)換規(guī)則轉(zhuǎn)換規(guī)則:字符型數(shù)據(jù)賦給整型
54、變量時,將字符的ASCII碼賦給整型變量。將一個占字節(jié)多的整型數(shù)據(jù)賦給一個占字節(jié)少的整型變量/字符變量時,只將其低字節(jié)原封不動地送到該變量 i=289 c=33將有符號整數(shù)賦值給長度相同的無符號整型變量時,按字節(jié)原樣賦值。0 0 0 0 0 0 0 10 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1例3.1有符號整數(shù)賦值給無符號整型變量,數(shù)據(jù)會失真。 #include void main ( ) unsigned a; /* 定義定義a為無符號整型變量為無符號整型變量 */ int b; /* 定義定義b為有符號整型變量為有符號整型變量 */ b=-1; b a=b; a pri
55、ntf(%un,a); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:4294967295 由于a是無符號整型變量,因此不能用%d輸出格式符,而要用輸出無符號數(shù)的“%u”格式符。1 1 11 11 11 11 11 11 111 1 11 11 11 11 11 11 11例:3.2 無符號整數(shù)賦值給有符號整型變量,注意數(shù)值范圍。#include void main ( ) unsigned a; int b; a=65535; /* 兩個字節(jié)兩個字節(jié)16位全為位全為1 */ b=a; /* b的數(shù)值范圍為的數(shù)值范圍為-3276832767 */ printf(%dn,b);運(yùn)行結(jié)果運(yùn)行結(jié)果 -1 執(zhí)行“b=a”時,將
56、a的兩個字節(jié)(全1)賦給b,由于是有符號的整型數(shù),笫1個二進(jìn)位是1表示此數(shù)是一個負(fù)數(shù),16位全1是-1的補(bǔ)碼。轉(zhuǎn)換規(guī)則:轉(zhuǎn)換規(guī)則:將無符號整數(shù)賦值給長度相同的有符號整型變量時,應(yīng)將無符號整數(shù)賦值給長度相同的有符號整型變量時,應(yīng)注意不要超出有符號整型變量的數(shù)值范圍,否則會出錯。注意不要超出有符號整型變量的數(shù)值范圍,否則會出錯。 3.3 賦值表達(dá)式和賦值語句 3.3.3 賦值語句v賦值語句是由賦值表達(dá)式加上一個分號構(gòu)成。 v賦值表達(dá)式的作用是將一個表達(dá)式的值賦給一個變量。v賦值表達(dá)式具有計(jì)算和賦值雙重功能。程序中的計(jì)算功能主要是由賦值語句來完成。v語言的賦值語句與其他高級語言的賦值語句之間的差異:
57、 (1) 語言中的賦值號“”是一個運(yùn)算符,在其他大多數(shù)語言中賦值號不是運(yùn)算符。 (2) 要區(qū)別賦值表達(dá)式和賦值語句。其他多數(shù)高級語言沒有“賦值表達(dá)式”這一概念。 3.3 賦值表達(dá)式和賦值語句 3.3.4 變量賦初值v程序中對變量賦初值的方法有兩種在定義變量的同時使變量初始化(更方便)int a=3; * 指定為整型變量,初值為 *float f=3.56; * 為浮點(diǎn)型變量,初值.56 *char c=a; * 指定為字符變量,初值為a *用賦值語句對變量賦值 int a; * 指定為整型變量*; * 賦值語句,將賦給*3.4 數(shù)據(jù)輸入輸出的概念 及在C語言中的實(shí)現(xiàn)(一).所謂輸入輸出是以計(jì)算
58、機(jī)主機(jī)為主體而言的輸出輸出:從計(jì)算機(jī)向外部輸出設(shè)備(顯示器,打印機(jī)) 輸出數(shù)據(jù)輸入輸入:從輸入設(shè)備(鍵盤,鼠標(biāo),掃描儀)向計(jì)算機(jī) 輸入數(shù)據(jù).(二).C語言本身不提供輸入輸出語句,輸入和輸出操作是由C函數(shù)庫中的函數(shù)來實(shí)現(xiàn)的例如例如: :字符輸入函數(shù): getchar字符輸出函數(shù):putchar格式輸入函數(shù): scanf 格式輸出函數(shù): printf字符串輸入函數(shù):gets 字?jǐn)?shù)穿輸出函數(shù):puts 3.4 數(shù)據(jù)輸入輸出的概念 及在C語言中的實(shí)現(xiàn)(三).在使用系統(tǒng)庫函數(shù)時,要用預(yù)編譯命令“#include”將有關(guān)的“頭文件”包括到用戶源文件中。例如:在調(diào)用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時,文件開頭應(yīng)該有: #
59、include “stdio.h” 或: #include 頭文件 3.4 數(shù)據(jù)輸入輸出的概念 及在C語言中的實(shí)現(xiàn)3.5 字符數(shù)據(jù)的輸入輸出3.5.1 用putchar函數(shù)輸出一個字符 vputchar函數(shù)(字符輸出函數(shù))的作用是向終端輸出一個字符。v一般形式為 putchar(c) 可以是字符型變量或整型變量 例3.3 輸出單個字符。#include#includevoid main()void main() char a,b,c;char a,b,c;a=B;b=O;c=Y;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);putcharputcha
60、r(a);putchar(b);putchar(c);putchar(n);(n); 運(yùn)行結(jié)果:BOYputchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);運(yùn)行結(jié)果:B O Y3.5 字符數(shù)據(jù)的輸入輸出3.5.2 用getchar函數(shù)輸入一個字符 vgetchar函數(shù)(字符輸入函數(shù))的作用是從計(jì)算機(jī)終端輸入一個字符。 vgetchar函數(shù)沒有參數(shù),一般形式為 getchar()函數(shù)的值就是從輸入設(shè)備得到的字符 例3.4 輸入單個字符。#include#includevoid main()void main() cha
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)改造合同范本
- 2025年中國智能化節(jié)能裝置行業(yè)市場需求預(yù)測及投資戰(zhàn)略規(guī)劃報告
- 中介房子銷售合同范例
- 農(nóng)村電廠維修合同范本
- 業(yè)主委托拍攝合同范例
- 出售移動廠房合同范本
- 供應(yīng)發(fā)票合同范本
- 中國一次性注射器市場全面調(diào)研及行業(yè)投資潛力預(yù)測報告
- 產(chǎn)品外銷合同范本
- 冷庫銷售安裝合同范本
- 政治校本課程
- 川2020J146-TJ 建筑用輕質(zhì)隔墻條板構(gòu)造圖集
- (完整)讀歌詞猜歌名
- 八年級下開學(xué)第一課主題班會
- 初中英語人教版 八年級上冊 單詞默寫表 漢譯英
- pcs-9611d-x說明書國內(nèi)中文標(biāo)準(zhǔn)版
- GB/T 1634.1-2004塑料負(fù)荷變形溫度的測定第1部分:通用試驗(yàn)方法
- 無人機(jī)航拍技術(shù)理論考核試題題庫及答案
- T∕CMATB 9002-2021 兒童肉類制品通用要求
- 工序勞務(wù)分包管理課件
- 暖通空調(diào)(陸亞俊編)課件
評論
0/150
提交評論