第3章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式_第1頁
第3章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式_第2頁
第3章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式_第3頁
第3章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式_第4頁
第3章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式_第5頁
已閱讀5頁,還剩105頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第三章數(shù)據(jù)類型及格式輸出、運(yùn)算符與表達(dá)式主要內(nèi)容

C的數(shù)據(jù)類型

常量與變量整型數(shù)據(jù)及格式輸出實(shí)型數(shù)據(jù)及格式輸出字符型數(shù)據(jù)及格式輸出字符串及格式輸出變量的賦初值各類數(shù)值型數(shù)據(jù)混合計(jì)算算術(shù)運(yùn)算符和算術(shù)表達(dá)式賦值運(yùn)算符和賦值表達(dá)式逗號運(yùn)算符和逗號表達(dá)式3.1C的數(shù)據(jù)類型

整型(int,long,unsigned,unsignedlong)

字符型(char)

基本類型單精度型(float)

浮點(diǎn)型雙精度型(double)

枚舉類型(enum)

數(shù)據(jù)類型數(shù)組類型([])構(gòu)造類型結(jié)構(gòu)體類型(struct)

共用體類型(union)

指針類型(*)空類型(void)3.2常量和變量一、常量概念:在程序運(yùn)行中,其數(shù)值不能被改變的量。分類:直接常量和符號常量1.直接常量:是在程序中直接引用的數(shù)據(jù)。分為:整型、實(shí)型、字符型、字符串如:3,4.5,’S’,“china”等以數(shù)據(jù)的原形出現(xiàn)!2.符號常量:特點(diǎn):在程序中不能給它賦值。概念:是用標(biāo)識符來表示一個(gè)常量。定義形式(定義在函數(shù)體之外):#define標(biāo)識符常量數(shù)據(jù)例如:#definePI3.14159在程序預(yù)處理時(shí),凡是出現(xiàn)標(biāo)識符PI的地方都將用數(shù)據(jù)3.14159來替換。如:2*2.3*PI就等價(jià)于2*2.3*3.14159。習(xí)慣上,符號常量用大寫字母表示。#definePRICE30

intmain(){

int

num,total;num=10;total=num*PRICE;

printf(“total=%d”,total);return0;}符號常量在其作用域內(nèi)不能再被賦值。使用符號常量的好處:(1)含義清楚;(2)一改全改二、變量變量是指在程序運(yùn)行中,其值可以被改變的量?;靖拍睿鹤兞看碛?jì)算機(jī)內(nèi)存中的某一存儲(chǔ)空間,該存儲(chǔ)空間中存放的數(shù)據(jù)就是變量的值。在同一程序塊中,每個(gè)變量都有唯一的名字,不能被重復(fù)定義。

inta,b,c;floatx,y;charc1,c2;或intc1,c2;

自己設(shè)定,滿足標(biāo)識符的規(guī)定。如:int,float,char“;”不可省定義形式:類型標(biāo)識符變量名1[,變量名2,變量名3,...];例如:注意事項(xiàng):(1)變量必須先定義后使用

(2)每個(gè)變量必須被指定為一種類型

(3)一般習(xí)慣上用小寫字母表示變量,用大寫字母表示符號常量,以示區(qū)別。(僅是習(xí)慣不是規(guī)定)三、C語言中的標(biāo)識符概念:就是用來標(biāo)識變量名、符號常量名、函數(shù)名、類型名、文件名等的有效字符序列。(1)標(biāo)識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。定義規(guī)則:如:_1yearmonthstudent_namesum0M.D.Jones$123#a3b?ca=b(2)在C語言中,大寫字母和小寫字母被認(rèn)為是不同的字符。因此,a和A,I和i,Sum和sum,分別是兩個(gè)不同的標(biāo)識符。一般,變量名用小寫字母,與人們習(xí)慣一致。(3)用戶自定義的標(biāo)識符不能與保留字(關(guān)鍵字)同名。保留字關(guān)鍵字概念:就是具有特定含義的標(biāo)識符,用戶不能用來作自定義標(biāo)識符。C語言中的關(guān)鍵字較少,由ANSI標(biāo)準(zhǔn)推薦的關(guān)鍵字有32個(gè)。常用的有:(1)與數(shù)據(jù)類型有關(guān)的(14):charintfloatdoublesignedunsignedshortlongvoidstructuniontypedef

enum

sizeof(3)

與程序控制結(jié)構(gòu)有關(guān)的(12):

dowhileforifelseswitchcase

defaultgotocontinue

breakreturn 見課本P365附錄II(2)與存儲(chǔ)類別有關(guān)的:

autoexternregisterstatic一、整型常量的表示方法整型常量的表示方法:

1.十進(jìn)制整數(shù):123、-76、02.八進(jìn)制整數(shù)(以0開頭):076、-0253076轉(zhuǎn)換成十進(jìn)制:7*8+63.十六制整數(shù)(以0x開頭):0xa、0x20、0xf40xf4轉(zhuǎn)換成十進(jìn)制:15*16+43.3整型數(shù)據(jù)(1)整型變量的分類基本型,以int表示。長整型,以longint表示,或以long表示。無符號型,其中無符號型又分為無符號整型和無符號長整型,分別以unsignedintunsignedlong表示。默認(rèn)為有符號型:(signed)int,(signed)long

int二、整型變量類型比特?cái)?shù)最小取值范圍[signed]int16-215~(215-1)即-32768~32767[signed]long[int]32-231~(231-1)unsigned[int]160~(216-1)即0~65535unsignedlong[int]320~(232-1)intx;longy;2000200120022005xy內(nèi)存內(nèi)存地址20032004所有變量必須先定義再使用?。?2)整數(shù)在內(nèi)存中的存放形式整數(shù)在內(nèi)存中以補(bǔ)碼表示:一個(gè)正數(shù)的補(bǔ)碼和其原碼的形式相同;負(fù)數(shù)的補(bǔ)碼:將該數(shù)的絕對值的原碼,按位取反再加1。例如:整數(shù)8的16位(2字節(jié))編碼原碼:0000000000001000反碼:0000000000001000補(bǔ)碼:00000000

00001000例如:整數(shù)-8的16位(2字節(jié))編碼原碼:1000000000001000反碼:1111111111110111補(bǔ)碼:11111111

11111000內(nèi)存中存儲(chǔ)形式內(nèi)存中存儲(chǔ)形式(3)整型變量的定義類型標(biāo)識符變量名1[,變量名2,變量名3,...];如:inta,b;(指定變量a,b為整型)unsignedintc,d;(指定變量c,d為無符號整型)longe,f;(指定變量e,f為長整型)(5)整型數(shù)據(jù)的格式輸出例:main(){inta,b,sum;a=123;b=456;sum=a+b;printf(”a=%d,b=%d,c=%d\n”,a,b,sum);}

結(jié)果:a=123,b=456,c=579

原樣輸出格式符與輸出項(xiàng)一一對應(yīng)轉(zhuǎn)義字符(換行)printf函數(shù)的一般格式:printf("格式控制字符串",輸出項(xiàng)列表);◆必須用英文的雙引號括起來。

◆作用是控制輸出項(xiàng)的格式和輸出一些提示信息?!粢敵龅谋磉_(dá)式?!舫A俊⒆兞?、運(yùn)算符表達(dá)式、函數(shù)返回值等,每個(gè)輸出項(xiàng)之間用逗號“,”分隔。格式控制字符組成:普通字符、轉(zhuǎn)義字符、格式說明。普通字符按原樣輸出,主要用于輸出提示信息。:轉(zhuǎn)義字符“\”起頭的轉(zhuǎn)義字符(輸出所表示的字符或?qū)崿F(xiàn)其功能,見P25表3-1,詳后述)格式說明由"%"

和"格式字符串"組成:%格式字符串。它表示按規(guī)定的格式輸出數(shù)據(jù),與輸出項(xiàng)一一對應(yīng)。:常用的整型數(shù)據(jù)的輸出格式符:%d:以有符號十進(jìn)制數(shù)形式輸出整數(shù)。%ld:以有符號十進(jìn)制數(shù)形式輸出長整數(shù)。%md:以有符號十進(jìn)制數(shù)形式輸出整數(shù),至少占m位。如果數(shù)據(jù)的位數(shù)小于m,右對齊,若大于m,則按實(shí)際位數(shù)輸出。例如:printf("%d\n",100);100printf("%5d\n",100);100100printf("%d%8d″,100,100*100);10010010010000C語言的整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式是【】A)原碼B)補(bǔ)碼C)反碼D)ASCII碼以下【】組中的標(biāo)識符都是合法的C語言用戶標(biāo)識符:A)a_10B)charC)_intDsigned3aba#bdaya一、實(shí)型常量的表示方法:十進(jìn)制形式:由數(shù)字和小數(shù)點(diǎn)組成;例如:3.44.

.3注意:必須有小數(shù)點(diǎn)指數(shù)形式:由“十進(jìn)制小數(shù)”+“e(或E)”+“十進(jìn)制數(shù)整數(shù)”三部分組成。例如:12.5e-6表示12.5×10-6十進(jìn)制小數(shù)(尾數(shù)部分)e(或E)十進(jìn)制數(shù)整數(shù)(指數(shù)部分)3.4實(shí)型數(shù)據(jù)注意:e或E的兩邊必須有數(shù),且其后面必須為整數(shù);

如:6E0.2e56E

二、實(shí)型變量(1)實(shí)型變量在內(nèi)存中的存放形式和變量定義實(shí)型數(shù)據(jù)在內(nèi)存中是按照規(guī)范化的浮點(diǎn)數(shù)形式存儲(chǔ)的。變量定義:float變量名;

double變量名;數(shù)符尾數(shù)指數(shù)符號指數(shù)如:floata,b,c;doublea1,a2;a,b,c為float型變量名。a1,a2為double型變量名。(2)實(shí)型變量的分類單精度(float)型雙精度(double)型長雙精度(longdouble)型類型比特?cái)?shù)有效數(shù)字?jǐn)?shù)值范圍float326~7-10-38~1038double6415~16-10-308~10308

longdouble12818~19-10-4932~-104932實(shí)例floatx;doubley;2000200320042011xy內(nèi)存內(nèi)存地址(3)實(shí)型數(shù)據(jù)的輸出舉例P47例3.4:main(){floata,b;a=1.23e1;b=a+20;

printf("%f\n",a);printf("%f\n",b);}運(yùn)行結(jié)果:12.30000032.300000TC默認(rèn)浮點(diǎn)數(shù)據(jù)輸出6個(gè)小數(shù)位數(shù)(4)實(shí)型數(shù)據(jù)的輸出格式符(P37)%f:按小數(shù)形式輸出實(shí)型數(shù),整數(shù)部分全部輸出,默認(rèn)6位小數(shù)。%m.nf:按小數(shù)形式輸出實(shí)數(shù),制定保留n位小數(shù),數(shù)據(jù)總寬度至少為m位,右對齊,超過m位按實(shí)際長度輸出。例如:printf(“b=%5.2f”,2.3);

二種表現(xiàn)形式:用單引號括起來的一個(gè)字符;如:'A'、'1'、'?'等。只能是英文的單引號3.5字符型數(shù)據(jù)一、字符常量注意:a、’a’、”a”互不相同,分別為變量、字符常量、字符串常量。9、’9’、”9”互不相同,分別為整型常量、字符常量、字符串常量。用單引號括起來的由右斜杠(\)引導(dǎo)的轉(zhuǎn)義字符,長度為一個(gè)字節(jié),其含義不是字符本身,而是轉(zhuǎn)成新的意義。(P25表3-1)如:'\n''\101''\x41'在統(tǒng)計(jì)字符個(gè)數(shù)時(shí),只能記為一個(gè)字符轉(zhuǎn)義字符表字符形式功能

\n換行\(zhòng)t橫向跳格\b退格,將當(dāng)前位置移到前一列\(zhòng)f\\、\'、\"8進(jìn)制數(shù)表示的ASCII碼對應(yīng)的字符反斜杠、單引號、雙引號\ddd換頁

\xhh16進(jìn)制數(shù)表示的ASCII碼對應(yīng)的字符一個(gè)字符的多種表示方法:任一字符都可用’\ddd’或’\xhh’表示,其中ddd為該字符的ASCII碼八進(jìn)制形式、hh為該字符的ASCII碼十六進(jìn)制形式例:’A’、’\101’、’\x41’均表示A要避免的錯(cuò)誤:表示單引號:不是'''表示雙引號:不是'"'表示斜線:

不是'\'轉(zhuǎn)義字符應(yīng)用舉例printf("\n1234\nabcd\n");1234abcdprintf("\n1234\\\n");printf("\'\"\x41\n");1234\'"AP25例子3.1字符的值域:即字符的取值范圍。ASCII字符表中的所有字符,每個(gè)字符型數(shù)據(jù)在內(nèi)存中占一個(gè)字節(jié),包括可顯示字符和非顯示字符。例如:charc;c=’A’;c=65;c=’\101’;c=’\x41’;

c=0101;c=0x41;

二、字符變量字符變量用來存放字符常量,注意一個(gè)字符變量只能存放一個(gè)字符。一般以一個(gè)字節(jié)來存放一個(gè)字符,或者說一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。變量中可存儲(chǔ)一個(gè)字符或者一個(gè)0~255之間的無符號整數(shù)。三、字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及使用方法

存儲(chǔ)形式:按ASCII碼存儲(chǔ),不是字符本身,其形式與整數(shù)的存儲(chǔ)形式一樣。使用方法:

按字符使用:則使用字符本身。

按數(shù)值使用:則使用該字符的ASCII碼值。例3.6向字符變量賦以整數(shù)main(){chara,b;a=97;b=98;printf("%c,%c\n",a,b);printf("%d,%d\n",a,b);}運(yùn)行結(jié)果:a,b97,98例3.7大小寫字母的轉(zhuǎn)換main(){chara,b;a='a';b='b';a=a-32;b=b-32;printf("%c,%c\n%d,%d\n",a,b,a,b);}運(yùn)行結(jié)果:A,B65,66四、字符型數(shù)據(jù)輸出格式符%c:按字符輸出一個(gè)字符,但不輸出單引號。%mc:按字符輸出一個(gè)字符,占m位,右對齊。main(){charc=‘a(chǎn)’;

inti=97;printf(“%c,%d\n”,c,c);printf(“%c,%d\n”,i,i);}a,97a,97注:C語言允許字符變量參與數(shù)值運(yùn)算,用ASCII碼運(yùn)算;大小寫字母ASCII碼相差32。五、字符串常量字符串常量是用一對雙引號括起來的若干字符序列,隱含以’\0’結(jié)尾。字符串中字符的個(gè)數(shù)稱為字符串長度。長度為0的字符串(即一個(gè)字符都沒有的字符串)稱為空串,表示為“”(一對緊連的雙引號)。字符串常量和字符常量區(qū)別:1)字符常量由單引號括起來,字符串常量由雙引號括起來。2)字符常量只能是單個(gè)字符,字符串常量則可以含0個(gè)或多個(gè)字符。3)可以把一個(gè)字符常量賦予一個(gè)字符變量,但不能把一個(gè)字符串常量賦予一個(gè)字符變量。例如:charc1='A';是可以的,但charc1="A";是不合法的。如:有一個(gè)字符串為“CHINA”,則它在內(nèi)存中的實(shí)際存儲(chǔ)如下所示:最后一個(gè)字符‘\0’是系統(tǒng)自動(dòng)加上的,它占用6字節(jié)而非5字節(jié)內(nèi)存空間。又如:“ab\tcd”存儲(chǔ)長度為6個(gè)字節(jié)。

注意:在源程序中書寫字符串常量時(shí),不必加結(jié)束字符‘\0’,否則畫蛇添足。CHINA\04)字符常量占一個(gè)字節(jié)的內(nèi)存空間。字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字節(jié)數(shù)加1。增加的一個(gè)字節(jié)中存放字符“\0”(ASCII碼為0)。這是字符串結(jié)束的標(biāo)志,由系統(tǒng)自動(dòng)加上。六、串輸出格式符%s:輸出一個(gè)字符串。%ms:輸出一個(gè)字符串,至少占m列,右對齊,超過按實(shí)際輸出。例4.5main(){printf(“%s,%7s\n”,”CHINA”,”CHINA”);}CHINA,CHINA例:printf(“%s”,“CHINA”);printf(“CHINA”);把“CHINA”當(dāng)作一個(gè)字符串把“CHINA”當(dāng)作要原樣輸出的字符序列3.6變量賦初值在說明變量的同時(shí)給變量一個(gè)初始值。變量定義分配存儲(chǔ)空間變量初始化分配存儲(chǔ)空間的同時(shí)存入數(shù)據(jù)inta,b;ab??inta=1,b=2;ab12不確定例:看一看,下列的定義哪些是正確的?inta=5,b=3;inta=b=c=3;inta,b,c=3;應(yīng)寫為:inta=3,b=3,c=3;/*只有c賦了初值*/初始化不是在編譯階段完成的,而是在程序運(yùn)行時(shí)執(zhí)行本函數(shù)時(shí)賦予初值的,相當(dāng)于有一個(gè)賦值語句。例如:inta=3;相當(dāng)于:inta;/*指定a為整型變量*/a=3;/*賦值語句,將3賦予a*/§3.7各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算數(shù)據(jù)類型的級別:低高intunsignedlongdoublefloatchar橫向的必須先轉(zhuǎn)成縱向類型才能進(jìn)行運(yùn)算運(yùn)算規(guī)律:1)兩個(gè)同類型數(shù)據(jù)運(yùn)算結(jié)果為原類型。28+2int301/2int02)兩個(gè)不同類型的數(shù)運(yùn)算時(shí),系統(tǒng)自動(dòng)將低級類型轉(zhuǎn)換為高級類型,而后進(jìn)行同類型運(yùn)算,結(jié)果為高級類型。(表示范圍大的為高級類型,詳細(xì)見P44圖3.5)3.2/2結(jié)果為double型數(shù)據(jù)28+‘a(chǎn)’結(jié)果為int型數(shù)據(jù)32768*32結(jié)果為longint型數(shù)據(jù)3)多個(gè)數(shù)運(yùn)算時(shí),類型轉(zhuǎn)換要逐步進(jìn)行。2/3*6.3結(jié)果為?4.200.03.8算術(shù)運(yùn)算符與算術(shù)表達(dá)式三類算術(shù)運(yùn)算符號:

1.基本算術(shù)運(yùn)算符

2.強(qiáng)制類型轉(zhuǎn)換運(yùn)算符

3.自增、自減運(yùn)算符要求掌握每一種運(yùn)算符號的

功能、優(yōu)先級、結(jié)合性

[P42

表3-3]結(jié)合性的含義:當(dāng)某一運(yùn)算對象兩側(cè)的運(yùn)算符號優(yōu)先級相同時(shí),按照結(jié)合性所規(guī)定的方向進(jìn)行運(yùn)算。如 a#b#c(#代表某一運(yùn)算符)若先運(yùn)算a#b,再將其結(jié)果與c運(yùn)算,稱為左結(jié)合性:從左至右運(yùn)算若先運(yùn)算b#c,再將a與其結(jié)果運(yùn)算,則稱右結(jié)合性:從右至左運(yùn)算一、基本算術(shù)運(yùn)算符+:加法-:減法*:乘法/:除法%:取余或模兩個(gè)整數(shù)相除取整數(shù)商

3/5=0-5/3=-1 3./5=0.6 3/5.=0.6 3%5=3%兩側(cè)都應(yīng)為整型數(shù)據(jù)2.5%3出錯(cuò)優(yōu)先級:(*,/,%)高于(+,-)結(jié)合性:自左向右

P42表3-3二、算術(shù)表達(dá)式用算術(shù)運(yùn)算符和括符將操作數(shù)連接起來的式子。優(yōu)先級:()*/%+-結(jié)合性自左向右,與數(shù)學(xué)上一致。三、強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(類型名)常量(類型名)變量(類型名)表達(dá)式功能:將一個(gè)常量、變量或表達(dá)式轉(zhuǎn)換成所需類型。優(yōu)先級:屬單目運(yùn)算符,僅低于括號,高于基本算術(shù)運(yùn)算符。結(jié)合性:自右向左注意:類型名要用括號括起來,如果要轉(zhuǎn)換表達(dá)式的類型,則表達(dá)式也要用括號括起來。例:

float(2/3)錯(cuò)誤

(int)(2.5)%3值為2(float)5/2值為2.500000四、自增與自減運(yùn)算符(重點(diǎn)和難點(diǎn))++i,--ii先自增(減)1,再使用ii++,i--先使用i,i再自增(減)1(1)單獨(dú)使用時(shí)++i;等價(jià)i++;等價(jià)i=i+1;(2)j=++i;(3)j=i++;若i的初始值為3i=4;j=4;i=4;j=3;結(jié)合性:自右向左例:i=2;j=-i++;分析:(1)++、--、+(正號)、-(取負(fù))是同級運(yùn)算符,結(jié)合方向:自右向左。(2)-i++等價(jià)于-(i++)(3)對于括號內(nèi)的自增運(yùn)算,又要先使用i,再使i增加1。運(yùn)算結(jié)果:i的值為3,j的值為-2。優(yōu)先級:屬單目運(yùn)算符,僅低于括號類,高于基本算術(shù)運(yùn)算符。a=3;printf(“%d”,a++);運(yùn)算結(jié)果:輸出3,a的值為4。a=3;printf(“%d”,++a);運(yùn)算結(jié)果:輸出4,a的值為4。a=3;printf(“%d”,(a++)%2*(a+2));運(yùn)算結(jié)果:輸出6,a的值為4。注意:此時(shí)a的值已經(jīng)修改為4??!例:3--出錯(cuò)

-i--即-(i--),非(-i)--a=3;b=-a++;執(zhí)行后,b的值為-3,a的值為4切記:只能用于變量,不能用于常量或表達(dá)式3.5

賦值運(yùn)算符、賦值表達(dá)式、賦值語句賦值運(yùn)算符:=賦值表達(dá)式:變量=表達(dá)式功能:將“=”右側(cè)表達(dá)式的值賦給左側(cè)變量的值,賦值表達(dá)式的值是被賦值變量的值。賦值語句:變量=表達(dá)式功能:將“=”右側(cè)表達(dá)式的值賦給左側(cè)變量的值。*所有表達(dá)式末尾加“;”后即變?yōu)檎Z句賦值表達(dá)式舉例:(1)x=(y=12)/4y值為12,x值為3,表達(dá)式的值為3(2)x=y=12/4y值為3,x值為3,表達(dá)式的值為3(3)(x=y)=12/4該賦值運(yùn)算符左邊不是變量,而是一個(gè)表達(dá)式一、賦值運(yùn)算符賦值運(yùn)算符:=優(yōu)先級:僅優(yōu)先于最低級的逗號運(yùn)算符。結(jié)合性:自右向左例:c=b=a=5c=(b=(a=5))注1)賦值運(yùn)算符號不等于數(shù)學(xué)中的“等號”;注2)自增、自減運(yùn)算實(shí)際上也是一個(gè)特殊的賦值運(yùn)算符。賦值運(yùn)算過程“變量=表達(dá)式”過程:①計(jì)算右側(cè)表達(dá)式的值②類型轉(zhuǎn)換:若“=”兩側(cè)變量和表達(dá)式的類型不一致,將右側(cè)表達(dá)式的值類型轉(zhuǎn)換為左側(cè)變量的類型。③將轉(zhuǎn)換好的右側(cè)表達(dá)式的值賦給左側(cè)變量。例:main(){floata=-32.89;inti;i=a;printf(“%d\n”,i);a=i;printf(“%f\n”,a);}-32-32.000000賦值運(yùn)算小結(jié):①存儲(chǔ)長度長的數(shù)據(jù)賦給存儲(chǔ)長度短的變量,可能會(huì)丟失數(shù)據(jù);②存儲(chǔ)長度短的數(shù)據(jù)賦給存儲(chǔ)長度長的變量,保持?jǐn)?shù)值大小不變;③數(shù)據(jù)賦給存儲(chǔ)長度相同的變量,按存儲(chǔ)形式原樣照賦。二、復(fù)合賦值運(yùn)算符*=、/=、%=、+=、-=等等格式:變量復(fù)合賦值運(yùn)算符表達(dá)式功能:復(fù)合運(yùn)算符是一個(gè)運(yùn)算符,但功能上,是兩個(gè)運(yùn)算符功能的組合。例:

a+=b相當(dāng)于a=a+ba*=b+c相當(dāng)于a=a*(b+c)

優(yōu)先級:僅優(yōu)先于最低的逗號運(yùn)算符,和“=”同級。結(jié)合性:自右向左賦值表達(dá)式和賦值語句舉例例1:a+=a-=a*aa初值為2先做:a=a-a*a4-2表達(dá)式值為-2(a=-2)

再做:a=a+a-4表達(dá)式值為-4(a=-4)例2:sum=(a=123)+(b=456)賦值語句:等效于a=123;b=456;sum=a+b;結(jié)果:a=123,b=456,sum=579*表達(dá)式中的變量可用給該變量賦值的表達(dá)式代替(應(yīng)加括號)3.10

逗號運(yùn)算符和逗號表達(dá)式形式:逗號表達(dá)式1,逗號表達(dá)式2,…,逗號表達(dá)式n功能:從左至右依次計(jì)算各表達(dá)式的值,逗號表達(dá)式的值是最后一個(gè)表達(dá)式的值。優(yōu)先級:最低結(jié)合性:自左至右例:d=(a=3,b=5,c=a+b,c+2,a++)

依次進(jìn)行逗號表達(dá)式中各表達(dá)式的運(yùn)算,整個(gè)表達(dá)式的值為計(jì)算結(jié)束后,a、b、c、d的值分別為d=(a=3,b=5,c=a+b,c+2,a++)3a=35b=58c=8103a=433d=334,5,8,3例:(a=3*5,a*4),a+5的值為

a的值為2015(a=3*5,a*4),a+515a=15602020◆必須用英文的雙引號括起來?!粲善胀ㄗ址透袷秸f明字符組成?!粲扇舾蓚€(gè)地址組成的列表。◆變量的地址、字符串的首地址、指針變量等,以逗號“,”間隔?!糇兞康刂方M成:地址運(yùn)算符“&”后跟變量名。3.4

格式輸入函數(shù)scanfscanf函數(shù)調(diào)用的一般形式:scanf(“格式控制字符串”,輸入項(xiàng)地址列表);如scanf(“%d,%d”,&a,&b);函數(shù)功能:按照格式控制字符串所規(guī)定的格式,從鍵盤上輸入數(shù)據(jù),依次賦給各個(gè)變量。格式控制串由下列2類組成:

1.“%”起頭的輸入項(xiàng)格式符(與輸入項(xiàng)一一對應(yīng))

2.普通字符(原樣輸入)注:不能用轉(zhuǎn)義字符。常用格式字符:類型格式字符說明(短)整型%d長整型%ld實(shí)型(單精度型)%f輸入小數(shù)形式或指數(shù)形式(不區(qū)別小數(shù)和指數(shù))實(shí)型(雙精度型)%lf輸入小數(shù)形式或指數(shù)形式(不區(qū)別小數(shù)和指數(shù))字符型%c輸入一個(gè)字符,不帶‘’%d輸入一個(gè)字符的ASCII碼字符串%sscanf和printf的區(qū)別:例:inta;printf(“%d”,a);scanf(“%d”,a);intb;printf(“%d\n”,b);scanf(“%d\n”,&b);doubled;printf(“%f\n”,d);scanf(“%f”,&d);輸出實(shí)數(shù)時(shí),不論是單精度還是雙精度數(shù),都可用%f;輸入實(shí)數(shù)時(shí),單精度數(shù)用%f,雙精度數(shù)用%lf。用scanf函數(shù)注意點(diǎn)例:用scanf函數(shù)給整型a、b輸入數(shù)據(jù),使a=123,b=4561)scanf(“%d,%d”,&a,&b);輸入:123,456↙

或???123,???456↙2)scanf(“%d?%d”,&a,&b);輸入:123?456↙或123???456↙或123(按Tab鍵)456↙或123↙456↙如果輸入:123,456↙錯(cuò)誤3)scanf(“a=%d,b=%d”,&a,&b);輸入:a=123,b=456↙

或a=123,b=456↙

輸入數(shù)值數(shù)據(jù)前加一些前導(dǎo)空格、Tab、回車不影響輸入。注:①非格式字符要原樣輸入,一般用空格或逗號作為數(shù)據(jù)間隔符。②輸入數(shù)值數(shù)據(jù)時(shí),前導(dǎo)空格不計(jì)。③輸入空格時(shí),可以用多個(gè)空格、一個(gè)或多個(gè)Tab、回車代替。4)scanf(“%d%d”,&a,&b);輸入:123456↙

或123456↙或123(按Tab鍵)456↙或123↙456↙注意:輸入多個(gè)數(shù)值數(shù)據(jù)時(shí),如果沒有設(shè)定分隔符,在輸入數(shù)據(jù)時(shí)可用空格、回車或Tab鍵來分隔。C編譯在遇到這些符號即認(rèn)為前一數(shù)據(jù)結(jié)束。例:charx,y,z;scanf(“%c%c%c”,&x,&y,&z);1)輸入:def↙則:x=‘d’,y=‘’,z=‘e’2)輸入:def則:x=‘d’,y=‘e’,z=‘f’例:charx,y,z;scanf(“%c%c”,&x,&y);scanf(“%c,&z);1)輸入:de↙f↙則:x=‘d’,y=‘e’,z=‘\n’2)輸入:def則:x=‘d’,y=‘e’,z=‘f’注:在用“%c”輸入字符時(shí),輸入任意字符均作為有效字符。例:輸入數(shù)據(jù)使得a=1,b=2,x=3,y=4inta,b;intx,y;scanf(“%d%d”,&a,&b);scanf(“%d%d”,&x,&y);輸入:12↙34↙例:inta;charb;floatc;scanf(“%d%c%f”,&a,&b,&c);輸入:1234a123o.26↙則:a=1234,b=‘a(chǎn)’,c=123.0注:在獲取輸入數(shù)據(jù)時(shí),如果遇到非法數(shù)據(jù),則當(dāng)前數(shù)據(jù)到此結(jié)束。3.4.3字符數(shù)據(jù)的輸入輸出

printf函數(shù)+“%c”格式符

scanf函數(shù)+“%c”格式符

putchar函數(shù):用于輸出一個(gè)字符

getchar函數(shù):用于輸入一個(gè)字符(1)函數(shù)格式int

putchar(ch);(2)函數(shù)功能向標(biāo)準(zhǔn)輸出設(shè)備(一般為顯示器)輸出一個(gè)字符,并返回輸出字符的ASCII碼值。一、putchar函數(shù)(字符輸出函數(shù))函數(shù)返回值類型函數(shù)的名稱函數(shù)的參數(shù)參數(shù)ch可以是字符常量、字符變量和整型數(shù)值表達(dá)式。例1:putchar(‘\n’);在屏幕上輸出一個(gè)換行符例2:c=‘*’;putchar(c);在屏幕上輸出一個(gè)“*”例3:putchar(65)相當(dāng)于putchar(‘A’)在屏幕上輸出字母A,65是A的ASCII碼。putchar函數(shù)的說明:注:要調(diào)用該函數(shù),在程序前要包含“頭文件”(在頭文件中包含了putchar函數(shù)有關(guān)的信息):

#include“stdio.h”

或#include<stdio.h>否則,會(huì)出現(xiàn)錯(cuò)誤提示:“undefine

sybom‘_putchar’in…”例:#include<stdio.h>main(){inta=65;charb='B';

putchar(a);putchar(65+1);

putchar(b);putchar('B'+1);}程序運(yùn)行結(jié)果為:ABBC包含函數(shù)putchar的頭文件(1)函數(shù)格式int

getchar();(2)函數(shù)功能從標(biāo)準(zhǔn)輸入設(shè)備(一般為鍵盤)讀入一個(gè)字符,返回該字符的ASCII碼值。二、getchar函數(shù)(字符輸入函數(shù))函數(shù)返回值類型函數(shù)的名稱無參數(shù)注意:程序運(yùn)行到getchar()時(shí),將返回用戶屏幕,等待用戶輸入一個(gè)字符,輸入后,才繼續(xù)向下運(yùn)行。若用戶輸入字符后未按回車鍵,則鍵入的內(nèi)容一直保留在鍵盤緩沖區(qū)中,只有用戶鍵入回車鍵后,字符輸入函數(shù)getchar才進(jìn)行處理。

函數(shù)getchar將回車鍵作為一個(gè)字符讀入。如果程序中有兩個(gè)以上函數(shù)getchar時(shí),應(yīng)該一次性輸入所需字符,最后再按回車鍵。也要在程序前包含頭文件:

#include“stdio.h”

或#include<stdio.h>無論輸入的是英文字母或標(biāo)點(diǎn)符號還是數(shù)字,都是作為字符輸入。例:#include<stdio.h>/*包含頭文件*/voidmain(){inta;a=getchar(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論