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

下載本文檔

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

文檔簡介

數(shù)據(jù)類型運算符與表達(dá)式1第1頁,課件共51頁,創(chuàng)作于2023年2月本章目標(biāo):C語言的基本符號C語言的數(shù)據(jù)類型運算符和表達(dá)式數(shù)據(jù)類型轉(zhuǎn)換自增,自減運算2第2頁,課件共51頁,創(chuàng)作于2023年2月C語言的基本符號C語言的基本詞匯表有下列幾部分:數(shù)字:10個(0~9)。英文字母:大、小寫各26個(A~Z,a~z)。下劃線字符“_”(用來構(gòu)成標(biāo)識符)。運算符:是指為表達(dá)程序基本操作使用的一些符號;關(guān)鍵字:是指為表達(dá)程序功能使用的一些英文單詞或單詞縮寫。3第3頁,課件共51頁,創(chuàng)作于2023年2月標(biāo)識符定義:

程序中用來為符號常量、變量、函數(shù)、數(shù)組、類型、文件命名的有效字符序列稱為標(biāo)識符。命名規(guī)則:1只能由字母、數(shù)字和下劃線組成。2第一個字符必須為字母或下劃線。3不能使用關(guān)鍵字。4區(qū)分大小寫字符。5

ANSIC沒有規(guī)定標(biāo)識符的長度,各個編譯系統(tǒng)允許的標(biāo)識符的長度(字符個數(shù))不同。4第4頁,課件共51頁,創(chuàng)作于2023年2月常量定義:常量又稱為常數(shù),是在程序運行過程中其值不能被改變的量,常量的類型是由本身隱含決定的。舉例:25、0、-13為整型常量;

-55.23、0.57、3.8e3為實型常量;

‘B’,‘9’為字符型常量。符號常量:

在C語言中,經(jīng)常使用一個標(biāo)識符來代表一個常量。也就是給常量命名,稱為符號常量。

5第5頁,課件共51頁,創(chuàng)作于2023年2月[例]閱讀程序。#definePI3.1415926/*宏定義*/#include<stdio.h>voidmain(){ floatr=18.5,area,length;area=PI*r*r;length=2*PI*r; printf("area=%6.2f,length=%6.2f",area,length);}符號常量幾點說明:程序中用宏定義的方法定義標(biāo)識符PI代表常量;符號常量名一般用大寫字符;符號常量的值在有效范圍內(nèi)不能改變,也不能再被賦值;使用符號常量可以做到“含義清楚”、“一改全改”,從而提高程序的可讀性,方便程序的修改。6第6頁,課件共51頁,創(chuàng)作于2023年2月變量

1.變量的基本概念定義:在程序運行過程中其值可以改變的量稱為變量。變量具有三個屬性:變量名:選擇一個標(biāo)識符,給變量取一個名字稱為變量名,變量名的命名規(guī)則與標(biāo)識符完全相同。變量值:

是對應(yīng)變量名的存儲單元所存放的具體的數(shù)值。變量的數(shù)據(jù)類型:是指變量可以存儲的數(shù)據(jù)的類型,也就是變量值的數(shù)據(jù)類型。7第7頁,課件共51頁,創(chuàng)作于2023年2月

2.變量的定義變量的定義:

程序中指定變量的名字和數(shù)據(jù)類型變量的定義在一個函數(shù)開頭的聲明部分變量定義的一般形式:類型說明符變量名1,變量名2,…

,變量名n;舉例:intk,m,n;/*定義三個整型變量*/floatx,y,z;/*定義三個實型變量*/

charstr;/*定義一個字符型變量*/8第8頁,課件共51頁,創(chuàng)作于2023年2月3.變量的初始化定義變量的同時,還可以為變量指定初值,稱為變量的初始化。例如程序段:floaty=0.5;charstr='a';又如:intj=0,sum=100;該定義變量方式與下面的語句等價:intj,sum;j=0;sum=100;也可以對被定義變量的一部分賦初值。inti=0,j=0,k,sum;不可以用下面的寫法對幾個變量同時賦同一個初值。inti=j=k=0;

9第9頁,課件共51頁,創(chuàng)作于2023年2月幾點說明:

程序運行時從變量中取值,實際上是通過變量名找到相應(yīng)的內(nèi)存地址,從其相應(yīng)的存儲單元中讀取數(shù)據(jù)。程序中變量值卻可以動態(tài)更換。變量定義后并沒有確定的值,或者說值是隨機(jī)的??梢圆捎媚承┓椒ńo變量賦值,當(dāng)再次給變量賦值時,新值將替代舊值。程序中使用的變量,必須“先定義,后使用”。

58a12001a1:變量名58:變量值2001:存儲單元地址Inta1=50;a1=58;a1=a1+2;200210第10頁,課件共51頁,創(chuàng)作于2023年2月關(guān)鍵字定義:

為了清晰的表達(dá)程序的功能,使用了一些英文單詞或單詞縮寫,這些單詞稱為關(guān)鍵字。舉例:if

、int

、while

下面幾個字雖然不屬于關(guān)鍵字,但建議讀者把它們看作關(guān)鍵字,不要在程序中隨便使用。defineundefincludeifdefifndefendif

11第11頁,課件共51頁,創(chuàng)作于2023年2月C語言的數(shù)據(jù)類型C語言中各種數(shù)據(jù)類型具有不同的存儲長度、取值范圍及允許的操作。C語言將能處理的數(shù)據(jù)分成兩大類型,基本類型和構(gòu)造類型,構(gòu)造類型的數(shù)據(jù)是由若干個基本類型按一定的結(jié)構(gòu)組合而成的。C語言規(guī)定:在程序中用到的數(shù)據(jù),都必須指定其數(shù)據(jù)類型。12第12頁,課件共51頁,創(chuàng)作于2023年2月整型數(shù)據(jù)1.整型變量(1)有符號整型變量的分類有符號整型變量按數(shù)值的范圍分為三種:1基本整型:以int作為類型說明符2短整型:以shortint或short作為類型說明符3長整型:以longint或long

作為類型說明符整型變量一般在內(nèi)存中占的字節(jié)數(shù)與所選擇的系統(tǒng)有關(guān),規(guī)定long型整數(shù)不短于int型,short型整數(shù)不長于int型。13第13頁,課件共51頁,創(chuàng)作于2023年2月(2)無符號整型變量的分類定義:用來處理一些不帶符號的整型變量,將存儲單元中的全部二進(jìn)制位都用來存放數(shù),取消符號位,稱為無符號整型。無符號整型變量按數(shù)值的取值范圍不同也分為三種:1、無符號基本整型:以unsignedint作為類型說明符2、無符號短整型:以unsignedshortint或unsignedshort

作為類型說明符3、無符號長整型:以unsignedlongint或unsignedlong

作為類型說明符14第14頁,課件共51頁,創(chuàng)作于2023年2月整型數(shù)據(jù)在內(nèi)存中的存儲形式01111111111111111111111111111111符號位數(shù)據(jù)位=32767=65535有符號整型無符號整型15第15頁,課件共51頁,創(chuàng)作于2023年2月2.整型常量整型常量的表達(dá)形式整型常量就是整常數(shù)。有以下三種表達(dá)形式:1十進(jìn)制整數(shù)例如:567、0、-89。2八進(jìn)制數(shù)特征是以數(shù)字符0開頭,并由數(shù)字符0~7組成的字符序列,例如0125,011;3十六進(jìn)制數(shù)特征是以0x或0X開頭,并由數(shù)字符0~9,和字符a~f或者字符A~F組成的數(shù)字符序列。0x2ab,0X2AB。16第16頁,課件共51頁,創(chuàng)作于2023年2月整型常量的類型整型常量的類型是由其本身隱含決定的例如:32767的類型是int,32769類型是long

一個整常量后面加一個字母L(或小寫l),則明確指定該常量是longint型的,例如0L,123L,234l等。17第17頁,課件共51頁,創(chuàng)作于2023年2月實型數(shù)據(jù)1、實型變量(1)實型變量的分類實型變量按數(shù)值的范圍分為三種:1單精度實型:以float作為類型說明符;2雙精度實型:以double作為類型說明符;3長雙精度實型:以longdouble作為類型說明符;類型說明符字節(jié)數(shù)比特數(shù)有效數(shù)字?jǐn)?shù)值范圍單精度實型float4326-710-38~1038雙精度實型double86415~1610-308~10308長雙精度實型longdouble1612818~1910-4932~10493218第18頁,課件共51頁,創(chuàng)作于2023年2月(2)實型變量的定義對每一個實型變量,都應(yīng)在使用前進(jìn)行定義,例如:

floatx,y;/*定義x,y為單精度實數(shù)*/doublez;/*定義z為雙精度實數(shù)*/2、實型常量實型常量的表達(dá)形式十進(jìn)制小數(shù)形式0.125、.125、-0.125、-125.0、1.25;指數(shù)形式一般格式是實數(shù)(整數(shù))+e(或E)+整數(shù)例如:123.456的指數(shù)形式是1.23456e2、1.23456E2、12.3456e1、0.0123456e4、.123456e3、12345.6e-2等。而e2、1.23e3.5、e、12345E

等都是不合法形式。19第19頁,課件共51頁,創(chuàng)作于2023年2月字符型數(shù)據(jù)1、字符常量定義:字符常量是用單撇號括起來的一個字符。舉例:‘

a’,‘A’,‘$’,‘5’等都是字符常量。轉(zhuǎn)義字符:還有一些特殊的字符,C語言約定用“\”開頭的字符序列作為標(biāo)記,這類字符統(tǒng)稱為“轉(zhuǎn)義字符”。舉例:轉(zhuǎn)義字符‘\n’中的“n”不代表字母n,該轉(zhuǎn)義字符表示在輸出過程中將當(dāng)前位置移到下一行的開頭,簡稱換行;20第20頁,課件共51頁,創(chuàng)作于2023年2月2.字符變量定義:用來存放一個字符常量的變量稱為字符變量。

例如程序段:

charc1,c2;/*定義變量c1,c2為字符變量*/c1='a';c2='b';/*將字符常量存放到字符變量中*/幾點說明:字符常量或字符變量在內(nèi)存中都只占有一個字節(jié)。字符在程序中是以ASCII碼的形式表示的,在內(nèi)存中是以二進(jìn)制的形式存儲的,它與以整數(shù)的存儲形式相類似。在C程序中,字符型數(shù)可以當(dāng)作整型數(shù)進(jìn)行處理,并且可以和整型數(shù)混合操作和處理。21第21頁,課件共51頁,創(chuàng)作于2023年2月閱讀程序。#include<stdio.h>voidmain(){charch1;intch2;ch1='A';ch2='B';printf("\n%d,%d\n",ch1,ch2);ch1=97;ch2=98;ch1=ch1+6;ch2=98+6;printf("%c,%c\n",ch1,ch2);printf("%d,%d",ch1,ch2);}運行結(jié)果:65,66g,h103,10422第22頁,課件共51頁,創(chuàng)作于2023年2月23第23頁,課件共51頁,創(chuàng)作于2023年2月字符串常量定義:字符串常量是括在一對雙撇號之間的字符序列(其中也可以包括轉(zhuǎn)義字符)舉例:“Clanguage”,“s”,“$35.56”,“\tChins\ba\n”。字符串常量中的字符依次存儲在內(nèi)存中一塊連續(xù)的區(qū)域內(nèi),并把空字符‘\0’(ASCII值為0)自動地附加到字符串的尾部作為字符串的結(jié)束標(biāo)志。例如:字符串"HELLO"字符個數(shù)為5,所占內(nèi)存空間應(yīng)為6個字節(jié)。HELLO\024第24頁,課件共51頁,創(chuàng)作于2023年2月字符常量和字符串常量的區(qū)別:在程序中,用字符常量或字符串常量表示單個字符,例如‘a(chǎn)’,或“a”,兩者的區(qū)別如下:1、字符串“a”在內(nèi)存中占2個字節(jié),而字符‘a(chǎn)’

在內(nèi)存中占1個字節(jié)

字符串"a"字符'a'2、不能將字符串賦給一個字符變量例如程序段:charch1,ch2;

ch1='a';/*正確*/

ch2="a";/*錯誤*/a\0a25第25頁,課件共51頁,創(chuàng)作于2023年2月運算符和表達(dá)式運算符定義:

描述各種操作的符號稱為運算符。表達(dá)式定義:

用運算符將被操作對象連接起來,符合C語言語法的式子稱為表達(dá)式。表達(dá)式特點:(1)、常量和變量都是表達(dá)式(2)、運算符的類型對應(yīng)表達(dá)式的類型,例如:算術(shù)運算符對應(yīng)算術(shù)表達(dá)式。(3)、每一個表達(dá)式都有自己的值。26第26頁,課件共51頁,創(chuàng)作于2023年2月運算符屬性:(1)優(yōu)先級當(dāng)若干個運算符同時出現(xiàn)在表達(dá)式中時,優(yōu)先級規(guī)定了運算的先后次序。由于C語言運算符種類很多,所以優(yōu)先級有15級之多。

C語言把圓括號作為運算符,規(guī)定它的優(yōu)先級最高,規(guī)定為15級,從而保證優(yōu)先運算圓括號內(nèi)的式子,逗號運算符的級別最低,規(guī)定為1級。27第27頁,課件共51頁,創(chuàng)作于2023年2月(2)結(jié)合性

當(dāng)若干個具有相同優(yōu)先級的運算符相鄰出現(xiàn)在表達(dá)式中時,結(jié)合方向規(guī)定了運算的先后次序。分為“從左到右”和“從右到左”兩個結(jié)合方向。一般來說,大多數(shù)運算符的結(jié)合方向”從左到右”,只有單目運算符、賦值運算符和條件運算符的結(jié)合方向”從右到左”,這里單目運算符是指作用于一個操作對象的運算符。28第28頁,課件共51頁,創(chuàng)作于2023年2月算術(shù)運算符和算術(shù)表達(dá)式算術(shù)運算符:+,-,*,/,%幾點說明:1、+、-、*與數(shù)學(xué)中的意義相同2、在除法運算中,兩個整數(shù)相除的結(jié)果為整數(shù),一般采用”向零取整”的規(guī)則,取整時向零靠攏。例如9/2運算結(jié)果為4;-9/2運算結(jié)果為-4。29第29頁,課件共51頁,創(chuàng)作于2023年2月

3、%是取余運算符或稱模運算符,運算結(jié)果是兩個整數(shù)相除后的余數(shù)(整數(shù))。并且規(guī)定運算結(jié)果的正負(fù)符號與被除數(shù)的符號一致,如果被除數(shù)小于除數(shù),運算結(jié)果等于被除數(shù)。

9%2運算結(jié)果為12%9的運算結(jié)果為2-9%2的運算結(jié)果為-19%-2的運算結(jié)果為130第30頁,課件共51頁,創(chuàng)作于2023年2月賦值運算符和賦值表達(dá)式賦值運算符是符號=作用:將一個數(shù)據(jù)賦給一個變量。由賦值運算符將一個變量和一個表達(dá)式連接起來的式子稱為賦值表達(dá)式。一般形式:變量=表達(dá)式作用:把賦值運算符右邊表達(dá)式的值賦給賦值運算符左邊的變量

31第31頁,課件共51頁,創(chuàng)作于2023年2月幾點說明:1、賦值運算后,變量原來的值被表達(dá)式的值替換2、賦值表達(dá)式的值也就是賦值運算符左邊變量得到的值,如果右邊表達(dá)式的值的類型與左邊變量的類型不一致,以左邊變量的類型為基準(zhǔn)。3、賦值運算符的優(yōu)先級很低,僅高于逗號運算符。結(jié)合方向為“從右向左”。例:inta=2,b=5

計算表達(dá)式x=y=a+b的值32第32頁,課件共51頁,創(chuàng)作于2023年2月復(fù)合賦值運算符復(fù)合賦值運算符:+=-=*=/=%=(與算術(shù)運算有關(guān))已知:inta,b=5,c=4

計算表達(dá)式a+=a-=a=b+c的值。1.a+=(a-=(a=(b+c)))2.a=a+(a=a-(a=(b+c)))3.a=a+(a=a-(a=9));4.a=a+(a=a-9);5.a=a+0;a=0+0;a=0;最后表達(dá)式的值為0,變量a的值也為0。33第33頁,課件共51頁,創(chuàng)作于2023年2月數(shù)據(jù)類型轉(zhuǎn)換

整型、實型和字符型數(shù)據(jù)可以進(jìn)行混合運算,在進(jìn)行運算時,一般類型的數(shù)據(jù)先轉(zhuǎn)換成標(biāo)準(zhǔn)類型的數(shù)據(jù),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成相同類型的數(shù)據(jù)。轉(zhuǎn)換規(guī)則如下:

不同數(shù)據(jù)類型的數(shù)據(jù)間的混合運算34第34頁,課件共51頁,創(chuàng)作于2023年2月1、在運算過程中,每個數(shù)據(jù)要轉(zhuǎn)換為標(biāo)準(zhǔn)類型,以提高運算精度,例如:如果一個數(shù)據(jù)是float型,首先應(yīng)轉(zhuǎn)換double型;如果一個數(shù)據(jù)是short型或char型,首先應(yīng)轉(zhuǎn)換為int型。2、通過第一步轉(zhuǎn)換后,如果參與運算的數(shù)據(jù)類型仍不相同,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型的數(shù)據(jù),然后進(jìn)行運算。轉(zhuǎn)換的規(guī)則是,“由低向高”,也就是說一個表達(dá)式的值的類型是其中各個參與運算的數(shù)據(jù)中級別最高的類型。35第35頁,課件共51頁,創(chuàng)作于2023年2月自動轉(zhuǎn)換

所謂“自動轉(zhuǎn)換”就是系統(tǒng)根據(jù)規(guī)則自動將兩個不同數(shù)據(jù)類型的運算對象轉(zhuǎn)換成同一種數(shù)據(jù)類型的過程。36第36頁,課件共51頁,創(chuàng)作于2023年2月強(qiáng)制轉(zhuǎn)換

在C語言中,允許程序員根據(jù)自己的意愿將一種數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換成另一種數(shù)據(jù)類型。強(qiáng)制轉(zhuǎn)換的格式為:

(數(shù)據(jù)類型名)操作對象注意,強(qiáng)制轉(zhuǎn)換并不改變操作對象的數(shù)據(jù)類型和數(shù)值。例如,(int)f的確切含義是將f轉(zhuǎn)換成為整型值參與運算,而f本身的數(shù)據(jù)類型和數(shù)值都沒有任何改變。37第37頁,課件共51頁,創(chuàng)作于2023年2月賦值表達(dá)式的類型轉(zhuǎn)換當(dāng)賦值運算符左邊的變量與賦值運算符右邊的表達(dá)式的數(shù)據(jù)類型不相同時,系統(tǒng)負(fù)責(zé)將右邊的數(shù)據(jù)類型轉(zhuǎn)換成左邊的數(shù)據(jù)類型。會有兩種情況產(chǎn)生,一種是轉(zhuǎn)換以后會丟失數(shù)據(jù),另一種是轉(zhuǎn)換以后不會丟失數(shù)據(jù)。這與賦值號兩邊的表達(dá)式的數(shù)據(jù)類型所占的字節(jié)數(shù)及存儲表示方式有關(guān)。38第38頁,課件共51頁,創(chuàng)作于2023年2月intunsignedintlongintdoublefloatchar,short轉(zhuǎn)換規(guī)則存儲長度較短存儲長度較長總趨勢:算術(shù)表達(dá)式中的運算轉(zhuǎn)換小結(jié)39第39頁,課件共51頁,創(chuàng)作于2023年2月例:intx=2;floaty=1.6;charc='A';c+x*y=?65(int)2(int)1.6(double)3.2(double)68.2(double)40第40頁,課件共51頁,創(chuàng)作于2023年2月例:#include"stdio.h"voidmain(){intc;/*charc;*/c='B';printf("c=%c",c+'a'-'A');}

運行結(jié)果:c=b41第41頁,課件共51頁,創(chuàng)作于2023年2月例:#include"stdio.h"voidmain(){charc;inti=0x3241;printf("i=%c\n",i);c=i;printf("c=%d\n",c);printf("i=%d\n",i);}運行結(jié)果i=Ac=65i=1286542第42頁,課件共51頁,創(chuàng)作于2023年2月自增,自減運算一般形式:

++變量或變量++

――變量或變量――作用:使變量的值增1或減1,其中變量是指算術(shù)類型的變量。43第43頁,課件共51頁,創(chuàng)作于2023年2月設(shè)x為算術(shù)類型的變量:x++和++x的相同之處單獨作為一個表達(dá)式語句被使用時無論執(zhí)行了哪一種表達(dá)式,執(zhí)行結(jié)束后x的值都增加1;當(dāng)x++和++x出現(xiàn)在其他表達(dá)式中時,也就是說作為其他表達(dá)式的一部分時,表達(dá)式的結(jié)果是不同的。44第44頁,課件共51頁,創(chuàng)作于2023年2月前綴表示法是先將i值增/減1,再在表達(dá)式中使用;而后綴表示法是先在表達(dá)式中使用i的值,再將i值增/減1。例如:

i=3;i=3;j=i++;j=++i;

結(jié)果:j的內(nèi)容為3j的內(nèi)容為4i的內(nèi)容為4i的內(nèi)容為4

45第45頁,課件共51頁,創(chuàng)作于2023年2月閱讀程序main(){ inti=1,j=1,m; m=i++;/*等價于:m=i;

溫馨提示

  • 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

提交評論