第3章 數據類型、運算符和表達式55_第1頁
第3章 數據類型、運算符和表達式55_第2頁
第3章 數據類型、運算符和表達式55_第3頁
第3章 數據類型、運算符和表達式55_第4頁
第3章 數據類型、運算符和表達式55_第5頁
已閱讀5頁,還剩51頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

計算機處理的對象是數據,而數據是以某種特定的形式存在的,例如,姓名可以用一個字符數據表示,年齡可以用一個整數表示,各種商品的價格可以用實數表示等。為了能準確、方便地用數據描述生活中的各種信息,C語言將數據劃分為不同的類型。本章學習C語言的基礎知識:數據類型、運算符與表達式。房間——內存單元房號——單元地址預定房間——定義變量,inta,b;入住客人——變量賦值,a=3;在C語言中,各類數據是計算機處理的主要對象,這些數據在計算機處理過程中,也需要使用一個類似“容器”的東西加以表達和儲存,這通常是由常量和變量來完成的。常量:用來表達在程序運行過程中其值保持恒定的數據。變量:用來表達在程序運行過程中其值可以根據需要經常更新的數據。想一想:常量中的數據是如何存入的?當變量中的數據更新后,它原來的值到哪兒去了?計算機的數據在程序運行時,放在內存的單元。只有當存入某文件時才寫入磁盤,文件后面講。第三章數據類型、運算符和表達式掌握C的數據類型及其定義方法-P37掌握C運算符種類、運算優(yōu)先級、結合性-P365掌握不同類型數據間的轉換與運算-P54掌握C表達式類型和求值規(guī)則3.1C的數據類型——P373.1C的數據類型整型字符型實型(浮點型)枚舉類型單精度型雙精度型數組類型結構體類型共用體類型構造類型基本類型指針類型空類型數據類型3.2常量與變量

一、常量1.什么是常量?常量是在程序運行過程中,其值不能被改變的量。2.常量的分類?常量直接常量符號常量:從其字面形式即可判斷的常量。如:12、3.5、‘a’:利用一個標識符代表的常量。

例1:(直接常量)main(){

intr;floatl,s;r=10;l=2*3.14159*r;s=3.14159*r*r;

printf(“l(fā)=%f\n”,l);

printf(“s=%f\n”,s);}

例2:(符號常量)#definePI3.14159main(){

intr;floatl,s;r=10;l=2*PI*r;s=PI*r*r;

printf(“l(fā)=%f\n”,l);

printf(“s=%f\n”,s);}

3.符號常量的特點①符號常量的實際值易于修改。②符號常量意義較明確,屬準常數。二、變量1.什么是變量?變量是指程序在運行過程中,其值會發(fā)生改變的量。inta;后a=4;a=8;?a發(fā)生了變化2.變量的屬性變量的屬性:變量名、變量類型、變量值

變量的定義格式:變量類型變量名如:charcup;

inta,b,c=10;floatx=2,y,z;3.變量的使用C語言中,對所有用到的變量作強制定義,即“先定義,后使用”。相當于預定客房。聯(lián)想:原樣照印,遇%d從后面提數據。變量名的書寫規(guī)則:由字母、數字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。例如:下列標識符中,不合法的變量名有:M.D.John,12%gf,1add,_ce36,age&,5thclass,lotus-1-2-3,cd*ef,float請思考為什么?提問同學。選變量名時,要做到“見名知意”例如:namest_agesum大小寫字母是兩個不同的字符,C變量名習慣用小寫字母表示。建議變量名的長度不要超過8個字符。變量名的含義:變量名實際上是一個符號地址,代表內存單元的地址。相當于房間號301。5(存儲單元)num例:num=5;例:sum=num;6(存儲單元)sum5(存儲單元)sum3.3整型數據一、整型常量1.十進制整數。如123、-456、0。2.八進制整數。以0開頭,如0123表示八進制數123,即(123)8,等于十進制數83。即:(123)8=

1×82+2×81+3×80=833.十六進制整數。以0x開頭,如0x123代表

16進制數123,即(123)16=1×162+2×161+3×160=291(6c)16=6×161+12×160=108二、整型變量

(一)整型變量的分類

基本型:以int

表示短整型:以shortint

或short

表示

1.類型長整型:以longint

或long

表示

(123l、123L)

無符號基本型(unsignedint)

無符號型無符號短整型(unsignedshort)

無符號長整型(unsignedlong)(-32768~32767)shortint

long數制轉換基本概念10進制:逢10進1,數碼01234567892進制:逢2進1,數碼0、1計算:1+1=?101+111=?8進制:逢8進1,數碼01234567計算:7+2=?13+17=?16進制:逢16進1,數碼0123456789ABCDEF計算:5+6=?A2+51=?10→2進制:除2取余。計算:8→10→8進制:除8取余計算:8→10→16進制:除16取余計算:18→數制轉換基本概念10進制:逢10進1數碼0123456789,位權為103102101100故每位的數為相應數碼*位權,1234為1*103+2*102+3*101+4*100=1234(十進制表示)2進制:逢2進1數碼0、1,位權為23222120故每位的數為相應數碼*位權,1101為1*23+1*22+0*21+1*20=13

(十進制表示)8進制:逢8進1數碼01234567,位權為83828180故每位的數為相應數碼*位權,0017為0*83+0*82+1*81+7*80=15(十進制表示)16進制:逢16進1數碼0123456789ABCDEF故每位的數為相應數碼*位權,00A3為0*163+0*162+10*161+3*160=17(十進制表示)與2進制對應0 0000 000 0000 01 0001 001 0001 12 0010 010 0010 23 0011 011 0011 34 0100 100 0100 45 0101 101 0101 56 0110 110 0110 67 0111 111 0111 78 1000 1000 89 1001 1001 910 1010 1010 A11 1011 1011 B12 1100 1100 C13 1101 1101 D14 1110 1110 E15 1111 1111 F2.整型數據在內存中的存放形式(補碼表示法:便于加減運算)inti;i=10;——也可用8421法處理10=(1010)22102522210余數0101首位8421法介紹(基本原理:15=23+22+21+20) |||| 8421如:11的2進制=?16的2進制=?反之,如已知1101是二進制數,求10進制數。二進制只有0、1,為何不出現(xiàn)2?逢2進1八進制只有01234567,逢8進1十六進制只有0~9,10以后要占兩位,必須用ABCDEF。F是多少?能出現(xiàn)G嗎?逢16進1通用性的轉換方法:除H取余,正向。*權后相加,反向。思考:用二進制進行過渡。16進制對應4位,8進制對應3(17)10=10001=0001,0001=(11)16(1A)16=0001,1010=16+8+0+2+0=(28)10八進制呢?同樣方法。(17)10=168421=10001=010,001=(21)8(17)8=001,111=8+4+2+1=(15)10

2.整型數據在內存中的存放形式(補碼表示法:便于加減運算)inti;i=10;——也可用8421法處理10=(1010)22102522210余數0101首位00000000

0000101000000000

0000101011111111

111101011111111

11111011010的原碼取反取反后再加1,得-10的補碼10的表示法,正數的補碼等于它的原碼-10一個無符號整型變量中可以存放的正數的范圍比一般整型變量中正數的范圍擴大一倍。只需一般了解。inta;/*變量a的數值范圍:-32768~32767*/unsignedintb;/*變量b的數值范圍:0~65535*/01111111

111111111111111

111111111符號位數據位3276765535(二)整型變量的字長TurboC:short和int是2個字節(jié)、long是4個字節(jié)(三)整型數據的數據范圍請看P43表。注意:①整型常量在給整型變量賦值的時候,一定要與其數據類型相匹配。②整數常量后加字母l或L,則是long型常量。③整數常量后加字母u或U,則是unsignedint

型常量。3.4實型數據——P45一、實型常量(小數、指數)1.十進制數小數形式如:0.123、123.0、.123、123.、0.0等。由整數、小數點、小數三部分組成。(必須有小數點)。2.指數形式如:123e3(相當于123x103),或寫成123E3由尾數、e(或E)和指數三部分表示組成。尾數為十進制整數或十進制浮點數,指數必須是整數。(注意三部分必須存在且有效)如:╳

e3╳2.1e3.5╳.e3╳e思考:為何錯?二、實型變量(一)實型變量的分類C實型變量分為單精度、雙精度、長雙精度。float型:字長32位(4個字節(jié))double型:字長64位(8個字節(jié))longdouble型:字長128位(16個字節(jié))(二)實型變量的定義單精度(float型)如:floatx,y;雙精度型(double型)如:doublea=10,b,c;例2.3main(){floata;doubleb;a=1234.111111;b=1234.111111;

printf(“a=%f,b=%f”,a,b);}輸出結果:a=1234.111084,b=1234.111111注意:float型的有效位數達到7位

double型的有效位數達到16位3.5字符型數據一、字符常量1.單引號括起來的一個字符:'T','7','!'2.轉義字符:指不能用符號直接表示的字符常量。將反斜杠(\)后面的字符轉變成另外的意義。如‘\n’中的n不代表字母n而作為“換行”符。例如:‘

\n

’換行,將當前位置移到下一行的開頭

\t

’橫向跳格(水平制表,占8列)

\b

’退一格

\r

’回車,將當前位置移到本行的開頭

\a

’報警

\0

’空字符

‘\j’代表字符‘j’‘\'’單撇號字符‘\"’雙撇號字符‘\ddd’1到3位八進制代表的字符-要會8進制(’\165’->11710->’u’)‘\xdd’1到2位十六進制代表的字符-要會16進制(‘\x6c’->10810->’l’)

‘\\’反斜杠(‘\’字符)——考試“\\n”,出\n

main(){printf("12345678901234567890\n");printf("c\tlanguags\be\rC\n");—\t跳8格,\b退1格,\r回本行頭printf("is\tusef\165\x6c");——\165是u,\x6c是l}Clanguageisuseful二、字符型變量(一)字符變量的定義形式charc1,c2;(二)字符的長度:1個字節(jié)字符型變量用來存放一個字符常量。實際在內存中存放的是該字符的ASCII碼值。main(){

inti;charc;i=97;c=’a’;

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

printf(“i=%d,c=%d”,i,c);}例:輸出結果:i=a,c=a

i=97,c=97

字符型數據和整型數據(0~255)之間可以通用。c=c+2;main(){

inti=298;

printf(“ASCII(%d)=%c\n”,i,i);}例:ASCII(298)=*(*的ASCII是298)00000001

00101010ASCII(42)=*298%256=42

main(){charbeep=‘\a’;

printf(“beep=%d%c\n”,beep,beep);}beep=7還會有一聲警告音三、字符串常量用雙引號括起來的一串字符序列。如:"ascii","7y677","8757gj\n"要點:注意:‘a’和“a”是完全不同的。

⑴字符串常量必須由雙引號括起。

⑵字符串常量的末尾有一個ASCII碼為0的字符(字符’\0’),作為字符串結束標志。

字符串常量的存儲存儲:字符串中的字符依次存儲在內存中一塊連續(xù)的區(qū)域內,并且把空操作字符‘

\0’自動附加到字符串的尾部作為字符串的結束標志。故字符個數為n的字符串在內存中應占n+1個字節(jié)。后面講字符數組時要用到。例:c=“china”china\03.6運算符和表達式的簡介一、什么是運算符和表達式?1+2運算符運算量運算量C語言的表達式是由常量、變量、調用函數通過運算符連接起來的式子。二、C運算符

C的運算符見55頁按運算量的數量來分,C語言的運算符分為單目運算符、雙目運算符和三目運算符。如:++——單目運算符例:i++

+——雙目運算符例:a+b?:——三目運算符例:a?c:d三、C表達式

C語言使用的基本表達式有:⑴賦值表達式,如:a=3⑵算術表達式,如:3+4*2⑶關系表達式,如:3>2⑷邏輯表達式,如:3>5&&a>=b⑸條件表達式,如:a>b?a:b⑹逗號表達式,如:a=3,b=4,c=5四、表達式的求值規(guī)則

1.在有多個運算符的表達式中,按照運算符優(yōu)先級的高低進行運算。(優(yōu)先級見附錄365頁)2.對于優(yōu)先級相同的表達式中,按照運算符的結合性來確定運算的次序。

a=b+d/3*83.7算術運算符和算術表達式——P551、基本的算術運算符:

+-(求正與求負)*/%(乘、除、求余)

+-(加與減)說明:

a=-b;(1)在“/”運算中,若操作數均為整數,則執(zhí)行整除運算,舍去小數部分。例如:5/3=1(2)“%”要求兩側均為整數,“%”運算不能用于float和double

型數據例如:5%3=2

2、各類數值型數據間的混合運算一、運算過程:先自動轉換成同類數據,再進行運算。

二、轉換規(guī)則:低字長類型轉換成高字長類型。double←float

↑long

↑unsigned

↑int←char,short①向左的橫向箭頭表示即使在同一種數據類型間進行運算時也要進行轉換。用于提高精度。②向上縱向箭頭表示當運算對象類型不同時的轉換方向。P54例:若有inti;floatf;doubled;longdoublee;判斷表達式:10+‘a’+i*f-d/e的類型(‘a’的ASCII是97)原則:向精度高的看齊。請思考:3/4?3.0/4?1/2*15*20?1.0/2*15*20?char8位,int16位float32位,double64位,longdouble128位intunsignedintlongintunsignedlongintdoubleshort,charfloat系統(tǒng)自動轉換3、強制類型轉換運算符一般形式:(類型名)(表達式)例如:(double)a+b;

(int)(x+y)功能∶把表達式的的值轉換成指定的類型。

輸出結果:x=3.600000,i=3注意:強制類型轉換后并不改變原來變量的類型請看下面程序段:main(){floatx,y;inti,j,k;x=3.6;i=(int)x;j=(int)x+5;k=(int)(x+3.6);printf(“x=%f,i=%d”,x,i);}3.8賦值運算符和賦值表達式——P59一、賦值運算符“=”賦值表達式的格式∶<變量>=<表達式>

如:num=5+3功能:將該運算符右側表達式的值賦給左側變量。要求:如果表達式類型與左邊的變量的類型不匹配,自動進行類型轉換。結合方向(自右向左)P365:

x=y=a+b等價x=(y=a+b)復合運算符:

在賦值符“=”之前加上其他運算符,可以構成復合的運算符。復合賦值運算符——優(yōu)點:書寫簡潔如:a+=3等價于a=a+3x*=y+8等價于x=x*(y+8)x%=3等價于x=x%3

常見復合賦值運算符:

+=,–=,*=,/=,%=復合賦值運算的功能:與左邊的變量進行復合運算后再賦給左邊變量。例:(賦值運算符和復合賦值運算符)

main(){

inta,b,c;a=b=c=5;從右向左

a=(b=8)+(c=9);/*a=17*/a=10;a+=a-=a*a;從右向左,先a=a-a*a;}賦值運算的順序:自右向左。

a=-180運算符說明:++自增,變量值加1––自減,變量值減13.9自增、自減運算符——P57i=i+1;i++;i=i-1;i--;自增運算符的另一種用法:++i、––i先使i的值加(減)1,再使用ii++、i––在使用i之后,使i的值加(減)1記憶:++i++(前加i后加)前加代表:用前加后加代表:用后加例:inti=5,j;j=++i;j=?i=?j=i++;j=?i=?舉例:

intj,i=3;j=++i;/*j的值為4*/j=i++;/*j的值為4,然后i的值變?yōu)?*/j=-i++;/*j的值-5,然后i的值變?yōu)?*/自右向左

i++;/*i=i+1;i為7*/j--;/*i=i-1;*/printf(“i=%d”,i++);printf(“i=%d”,++i);⑴自增、自減運算符只能用于變量,不能用于表達式。注意:如:╳(a+b)++╳5++╳(-i)++⑵使用時,應避免歧義性。如:i+++j(i++)+j(3)自增、自減運算符的結合方向是自右向左

x=-i++x=-(i++)3.10逗號運算符和逗號表達式——P65表達式1,表達式2,表達式3,……,表達式n一、逗號表達式的一般形式二、逗號表達式的求解原則依次求式1、式2,直至表達式n,逗號表達式的值為式n的值。三、逗號運算符的優(yōu)先級

優(yōu)先級最低。其他運算全部完成后才進行逗號運算。例:逗號表達式,其值為最后一項的值

main(){intx1,x2,a;x1=(a=3,6*3);x2=a=3,6*3;printf("x1=%dx2=%d\n",x1,x2);}輸出結果:x1=18x2=3main(){for(i=5,j=6;i+j>4;j--,i--)

語句部分}printf(“%f”,(x=x++,y=++y,x+y))i=2;printf(“%d,%d”,i,i++);3,2i=8,j=10printf(“%d,%d,%d,%d”,i,j,i++,j++);9,11,8,10關系運算符及表達式運算符>、<、==、>=、<=、!=優(yōu)先級低于算術、==和!=低于其它。但高于邏輯運算符。關系表達式:常量、變量及運算符構成關系表達式如a>10或b<=9。結果:成立為1,不成立為0分析:a=3,問a>10的結果是什么?邏輯運算符及表達式邏輯運算符&&||!邏輯表達式:常量、變量及運算符構成關系表達式通常用關系表達式+邏輯運算符構成邏輯表達式。如a>10&&a<=20表示范圍是什么?分析:a=8,問(a>10)&&(a<=20)的結果是什么?上面關系、邏輯可構成條件表達式,用于條件判斷。其值為成立1,不成立0。非0也成立。運算規(guī)則記憶:&&同0、1的乘,||同0、1的加。分析:1&&0,1||1,2&&3,3||1,a=3,!a結果?主要記憶要點:1.數據類型:整型、浮點、字符——對常量、變量記憶

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論