c-2數(shù)據(jù)類型、運算符和表達(dá)式_第1頁
c-2數(shù)據(jù)類型、運算符和表達(dá)式_第2頁
c-2數(shù)據(jù)類型、運算符和表達(dá)式_第3頁
c-2數(shù)據(jù)類型、運算符和表達(dá)式_第4頁
c-2數(shù)據(jù)類型、運算符和表達(dá)式_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第三章數(shù)據(jù)類型、運算符、表達(dá)式對數(shù)據(jù)的操作——運算運算符和表達(dá)式整型字符型實型(浮點型)單精度型雙精度型數(shù)組類型結(jié)構(gòu)體類型共用體類型構(gòu)造類型基本類型指針類型空類型數(shù)據(jù)類型§3C語言程序的基本元素有七種:①標(biāo)識符②關(guān)鍵字③空白字符④注釋⑤分隔符⑥常量⑦運算符一.標(biāo)識符標(biāo)識符的概念用來標(biāo)記文件名、常量、變量、函數(shù)名等有效字符序列標(biāo)識符的使用規(guī)則由英文字母、數(shù)字(0~9)或下劃線'_'組成的字符序列,

且必須由英文字母或'_'開頭,大小寫敏感。不與關(guān)鍵字標(biāo)識符相同,故又稱合法標(biāo)識符標(biāo)識符的長度無統(tǒng)一規(guī)定1標(biāo)識符的習(xí)慣用法常量用大寫變量用小寫常用取簡專用取繁顧名思義例:判斷下列標(biāo)識符號合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$1232023/2/6三.空白字符即程序中標(biāo)識符與標(biāo)識符之間,行與行之間的空白間隔的字符作用:程序文本格式的編輯,提高可讀性空白字符在編譯時不產(chǎn)生代碼四.注釋(/*...*/或者//……)輔助程序編輯過程中的記憶、閱讀和理解使用的位置:與“空白字符”相同,可多行注釋不產(chǎn)生編譯代碼不允許嵌套所謂關(guān)鍵字:即已由系統(tǒng)內(nèi)部使用,不能重作其它定義C關(guān)鍵字共有32個2二.關(guān)鍵字例如:

/*Thisisaexample/*fortest*/*/非法五.分隔符有八種,在C編譯程序中有其固定含義3C語言的基本元素(①標(biāo)識符②關(guān)鍵字③空白字符④注釋⑤分隔符⑥常量⑦運算符)常量和變量基本數(shù)據(jù)類型及其定義不同類型數(shù)據(jù)間的轉(zhuǎn)換運算符和表達(dá)式§3.1常量和變量一、常量定義:常量是在程序運行過程中,其值不能被改變的量。分類:直接常量:從其字面形式即可判斷的常量。

12(整型)、3.5(實型)、‘a(chǎn)’(字符型)符號常量:利用一個有效標(biāo)識符來代表一個常量(基本上用大寫)。:PI#definePI3.14例1:(直接常量)#include<stdio.h>voidmain(){intr;floatl,s;r=10;l=2*3.14*r;s=3.14*r*r;printf(“l(fā)=%f\n”,l);printf(“s=%f\n”,s);}求圓的周長和面積。l=2*3.14159*r;s=3.14159*r*r;例2:(符號常量)#include<stdio.h>#definePI3.14voidmain(){intr;floatl,s;r=10;l=2*PI*r;s=PI*r*r;printf(“l(fā)=%f\n”,l);printf(“s=%f\n”,s);}#definePI3.14159

符號常量的優(yōu)點:①符號常量的實際值易于修改。②符號常量的意義比較明確。例intx=3;chara,b,c;floatpi=3.1415;/*定義pi并初始化*/

floatscore;變量的定義類型變量名表;二、變量(存儲常量的容器)變量的概念變量:在程序執(zhí)行過程中,其值可以改變的量變量名:在內(nèi)存中占有一個存儲單元,并對應(yīng)一個地址3變量名x(地址)變量(值)變量的取值范圍存儲空間大小(字節(jié)數(shù))合法標(biāo)識符定義的同時可以賦初值52.變量的定義和使用C使用變量的原則:“先定義,再使用”#include<stdio.h>voidmain(){intx,y;x=3;y=x*x;printf(“%d”,y);}一個變量只定義一次,定義變量一般在程序的開頭,不能定義在程序的中間或后面?!?.2基本數(shù)據(jù)類型及其定義基本數(shù)據(jù)類型(整型實型字符型)八進(jìn)制整數(shù):無符號,0~7組成,最高位用0引導(dǎo),如010,0123

十六進(jìn)制整數(shù):無符號,0~9及a~f或A~F組成,最高位用0x或0X

引導(dǎo),如0x1a,0X1A

一.整型類型——整型常量十進(jìn)制整數(shù):帶符號,0~9組成,第一位數(shù)字為非零(除零外),如10,1232.整型類型——整型變量P45類型符號關(guān)

字(小寫)取

圍字節(jié)數(shù)整

型帶[signed]int-231~231-14B*[signed]short[int]-32768~327672B[signed]long[int]-231~231-14B不帶unsigned[int]0~232-14B*unsignedshort[int]0~655352Bunsignedlong[int]0~232-14B注意點:1.整型變量的分類2.整型變量在內(nèi)存中所占的字節(jié)數(shù)及其取值范圍3.整型變量的溢出問題4.整型變量輸入輸出的格式控制字符用%d和%u3.

整型數(shù)據(jù)的輸入輸出printf

(格式控制字符串,輸出參數(shù)1,...,輸出參數(shù)n);scanf(格式控制字符串,輸入?yún)?shù)1,...,輸入?yún)?shù)n);格式控制說明

%…

十進(jìn)制八進(jìn)制十六進(jìn)制int%d%o%xlong%ld%lo%lxunsigned%u%o%xunsignedlong%lu%lo%lx例3(1)輸出整型數(shù)據(jù)#include<stdio.h>voidmain(){inta=10;unsignedb=8;longc=100;printf("%d,%o,%x\n",a,10,10);printf("%d,%u,%ld\n",a,b,c);printf("%d,%x\n",012,012);}10,12,a10,8,10010,aprintf("%d,%#o,%#x\n",10,10,10);10,012,0xa格式控制字符普通字符注意事項:輸入時,格式控制字符個數(shù)與輸出參數(shù)應(yīng)遵循個數(shù)一致、順序一致和類型一致。inta;unsignedb;longc;scanf(“__________________”,&a,&b,&c);printf(“__________________”,a,b,c);%d%u%ld%d%u%lda=%d,b=%u,c=%ld例3(2)輸入整型數(shù)據(jù)兩部分不能同時缺省b.指數(shù)形式(指數(shù))[整數(shù)部分][.尾數(shù)部分][E|e[+|-]

指數(shù)部分]二.實型數(shù)據(jù)——實型常量a.十進(jìn)制形式:由0~9數(shù)字及小數(shù)點組成(小數(shù))9如:

e3

2.1e3.5

.e3

e指數(shù)部分為整數(shù)錯誤??!2.實型數(shù)據(jù)——實型變量float型:字長32位(4個字節(jié))

double型:字長64位(8個字節(jié))

longdouble型:字長128位(16個字節(jié))存放包含小數(shù)位的值分單精度(float)和雙精度(double)兩種float型的有效位數(shù)達(dá)到7位double型的有效位數(shù)達(dá)到16位3.實型數(shù)據(jù)的輸入和輸出輸入scanf()float:%f或%e以小數(shù)或指數(shù)形式輸入一個單精度浮點數(shù)double:%lf或%le以小數(shù)或指數(shù)形式輸入一個雙精度浮點數(shù)輸出printf()float和double使用相同的格式控制說明%f以小數(shù)形式輸出浮點數(shù),保留6位小數(shù)(float有效數(shù)字7位,double有效數(shù)字16位)%e以指數(shù)形式輸出例1:#include<stdio.h>voidmain(){floata;

doubleb;

a=1234.111111;

b=1234.111111;

printf(“a=%f,b=%f”,a,b);}輸出結(jié)果:a=1234.111***,b=1234.111111例2.實型數(shù)據(jù)輸出示例#include<stdio.h>voidmain() {doubled=3.1415926;printf("%f,%e\n",d,d);printf("%5.3f,%5.2f,%.2f\n",d,d,d);

}

3.141593,3.141593e+000一共5位,小數(shù)3位,小數(shù)點占一位3.142,3.14,3.14復(fù)習(xí)1、請選出可用作C語言用戶標(biāo)識符的一組標(biāo)識符____________。A).void

define

WORD

B).a3_b3_789IFC).For-gifCASED).3dUNDOsizeof2、voidmain(){inti=010,j=10,k=0x10;printf("%d,%d,%d\n",i,j,k);}輸出結(jié)果是

。A).8,10,16B).8,10,10C).10,10,10D).10,10,163、指出下面正確的輸入語句是__________。A).scanf("a=b=%d",&a,&b)B).scanf("a=%d,b=%f",&m,&f)C).scanf("%3d",c)D).scanf("%5.2f”,&f)

轉(zhuǎn)義字符:在單引號中,用反斜線引導(dǎo)的字符或數(shù)字來表示其他含義的字符常量三.字符型數(shù)據(jù)——字符常量普通字符:用單引號括起來的可表示的單個字符如:‘T’,‘7’,‘!’,

’(空格也是一個字符)9<轉(zhuǎn)義字符含義\n\v\r\a\‘\ddd\t\b\f\\\“\xhh轉(zhuǎn)義字符含義換行垂直制表回車響鈴單引號3位8進(jìn)制數(shù)代表的字符水平制表退格換頁反斜線雙引號2位16進(jìn)制數(shù)代表的字符inta=3;printf(“\“%dd\”\n”,a);三.字符型數(shù)據(jù)——字符變量(一)字符型變量用來存放一個字符常量。實際在內(nèi)存中存放的是該字符的ASCII碼值。

(二)字符變量的定義形式

charc1,c2;(三)字符的長度:1個字節(jié),取值范圍在0—255,輸入輸出用%c

(四)在一定范圍內(nèi)可直接參與整數(shù)變量的運算voidmain(){inti;charc;i=97;c=‘a(chǎn)’;printf(“i=%c,c=%c\n”,i,c);printf(“i=%d,c=%d”,i,c);}例1:輸出結(jié)果:i=a,c=ai=97,c=97

字符型數(shù)據(jù)和整型數(shù)據(jù)(0~255)之間可以通用。例2:字符數(shù)據(jù)的算術(shù)運算。

void

main()

{charch1=‘a(chǎn)’,ch2=‘B’;

ch1=ch1-32;ch2=ch2+32;

printf(“ch1=%c,ch2=%c\n”,ch1,ch2);

}Ch1=A,ch2=b

/*實現(xiàn)字母大小寫的轉(zhuǎn)換*/例3:字符數(shù)據(jù)輸入。

void

main()

{charch1,ch2;

scanf(“%c%c”,&ch1,&ch2);

printf(“ch1=%c,ch2=%c\n”,ch1,ch2);

}Ab↙Ch1=A,ch2=b

調(diào)用getchar和putchar輸入輸出一個字符字符輸出函數(shù)putchar輸出一個字符putchar(輸出參數(shù));字符常量或字符變量charch=‘a(chǎn)’;putchar(ch);putchar(‘?’);a?putchar(‘\n’);字符輸入函數(shù)getchar輸入一個字符charch1,ch2;ch1=getchar();ch2=getchar();功能:從鍵盤輸入一個字符,空格,回車鍵等都將作為字符讀入,且只有按enter鍵(回車鍵)時輸入結(jié)束四.字符串常量用“”括起來的零個或多個字符(含轉(zhuǎn)義字符)組成的字符序列

如:

"ascii","7y677","8757gj\n"

b.字符串的長度:指字符串中字符的個數(shù)。長度為0的字符串(即一個字符都沒有的字符串)稱為空串,表示為“

”(一對緊連的雙引號)。例如,“Howdoyoudo.”、“Goodmorning.”等,都是字符串常量,其長度分別為14和13(空格也是一個字符)。c.字符串的存儲C語言規(guī)定:在存儲字符串常量時,由系統(tǒng)在字符串的末尾自動加一個‘\0’作為字符串的結(jié)束標(biāo)志。注意:在源程序中書寫字符串常量時,不必加結(jié)束字符‘\0’,否則畫蛇添足。如果有一個字符串為“china”,則它在內(nèi)存中的實際存儲如下所示:

china\0思考:‘a(chǎn)’和“a”相同嗎?

‘7’和7相同嗎?charc1=‘a(chǎn)’;charc2=“a”;(錯誤)變量賦值的方法方法一:定義變量的同時賦值方法二:先定義變量,再用scanf賦值inta=4,b;scanf(“%d”,&b);3.3不同類型數(shù)據(jù)間的轉(zhuǎn)換類型轉(zhuǎn)換的概念在程序運行中,一種數(shù)據(jù)的類型改變成另一種數(shù)據(jù)類型類型轉(zhuǎn)換兩種方式隱式轉(zhuǎn)換——自動類型轉(zhuǎn)換顯式轉(zhuǎn)換——強制類型轉(zhuǎn)換隱式轉(zhuǎn)換發(fā)生在下列三種情況混合運算(算術(shù)轉(zhuǎn)換)賦值運算數(shù)據(jù)輸入輸出10

精度損失問題:無精度損失問題,但賦值運算中視情況而定一.算術(shù)轉(zhuǎn)換(隱式轉(zhuǎn)換)當(dāng)不同類型數(shù)據(jù)混合運算時,自動進(jìn)行的轉(zhuǎn)換轉(zhuǎn)換原則

精度損失問題:較高類型向較低類型轉(zhuǎn)換時可能發(fā)生二.強制類型轉(zhuǎn)換(顯式轉(zhuǎn)換)人為進(jìn)行的類型轉(zhuǎn)換使用格式

(類型名)表達(dá)式基本類型或指針類型常量、變量及其表達(dá)式11無條件的轉(zhuǎn)換(垂直)按類型的高低“向高看齊”顯式轉(zhuǎn)換(強制轉(zhuǎn)換)一般形式:(類型名)(表達(dá)式)例(int)(x+y)(int)x+y(double)(3/2)(int)3.6說明:強制轉(zhuǎn)換得到所需類型的中間變量,原變量類型不變低高intunsignedunsignedlongdouble

char(short)unsignedshortlong

float3)結(jié)合性:即指運算符與運算元的結(jié)合方向用于指導(dǎo)同級的運算左結(jié)合性——op自左向右右結(jié)合性——op自右向左表達(dá)式:運算元E與運算符的組合式§3.4運算符與表達(dá)式12一.運算符簡介運算符(op)

:用于對運算元E

進(jìn)行規(guī)定的操作。共有34種運算符,可分十大類(參見本課件第一章)運算符的三個屬性1)運算元數(shù)E:C最少1個,最多3個2)優(yōu)先級:共十五個(可簡化為八或十個)簡化后的優(yōu)先級:1一級運算符2單變量運算符3算術(shù)運算符4移位運算符5關(guān)系運算符6位邏輯運算符7邏輯運算符8條件運算符9賦值運算符10逗號運算符高低均為雙元運算,左結(jié)合五種運算*乘法

/除法%求模+加法-減法優(yōu)先級(4)二.算術(shù)運算優(yōu)先級(3)

說明a/b式中,a、b均為整數(shù)時,若不能整除,其商向零取整a%b式中,a、b均為整數(shù)+、-用于符號運算時,為單元運算、優(yōu)先級(2)、右結(jié)合性13括號“()”之內(nèi)表達(dá)式優(yōu)先級最高例:

-a-b+c

運算元(操作數(shù)E)必須是變量,不能用于常量和表達(dá)式。

例如,5++、--(a+b)等都是非法的。

三.自加自減運算用于對變量(假設(shè)為i)的自身加1減1運算——自反運算運算符、表達(dá)式及其屬性后置式:在多個運算符表達(dá)式中,總是:先使用(i)一次,再做自加(減)運算14自加自減運算應(yīng)用示例voidmain(){intx=6,y;printf("x=%d\n",x);/*輸出x的初值*/y=++x; /*前置運算*/printf("y=++x:x=%d,y=%d\n",x,y);y=x--; /*后置運算*/printf("y=x--:x=%d,y=%d\n",x,y);}y=x++;y=--x;X=6y=++x:x=7,y=7y=x--:x=6,y=7四.賦值運算分為簡單賦值和復(fù)合賦值兩種雙元運算、優(yōu)先級(14)、右結(jié)合賦值運算的一般形式

簡單賦值

E1=E2

復(fù)合賦值

E1op=E2

E1=(E1opE2)E1

E2的值

E1為變量,E2為常量、變量或表達(dá)式

E1、E2類型不同時,將發(fā)生類型轉(zhuǎn)換,結(jié)果為E1類型運行時,可以連續(xù)賦值給多個變量,但不能用于初始化例:inta=b=c=2;×

具有表達(dá)式使用功能

op運算符共有十種(算術(shù)和位運算),要求掌握下列五種:①*=

②/=③%=

④+=⑤-=15例2.1賦值運算舉例voidmain(){inta=3,b=2,c;b*=a+4*3%5;

printf("b=%d\n",b);a=8;a*=b=c=3;

printf("\na=%db=%d\n",a,b);a=5+(c+=3);

printf("a=%dc=%d\n",a,c);}/*b=b*(a+4*3%5)*//*b=10*//*c3,bc,ab*a*//*a=24b=3*//*賦值運算的表達(dá)式

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論