C語(yǔ)言程序設(shè)計(jì)數(shù)據(jù)類型課件_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)數(shù)據(jù)類型課件_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)數(shù)據(jù)類型課件_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)數(shù)據(jù)類型課件_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)數(shù)據(jù)類型課件_第5頁(yè)
已閱讀5頁(yè),還剩139頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第三章數(shù)據(jù)類型、運(yùn)算符

與表達(dá)式第三章數(shù)據(jù)類型、運(yùn)算符

與表達(dá)式1算法處理的對(duì)象是數(shù)據(jù)。數(shù)據(jù)是以某種特定的形式存在的,如整數(shù)、實(shí)數(shù)、字符等。所謂數(shù)據(jù)結(jié)構(gòu),就是指數(shù)據(jù)的組織形式。完整的程序設(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法

+程序設(shè)計(jì)方法+語(yǔ)言工具青島農(nóng)業(yè)大學(xué)理信學(xué)院算法處理的對(duì)象是數(shù)據(jù)。完整的程序設(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法

+程序2主要內(nèi)容一、數(shù)據(jù)類型二、變量與常量三、運(yùn)算符四、表達(dá)式數(shù)據(jù)成分運(yùn)算成分青島農(nóng)業(yè)大學(xué)理信學(xué)院主要內(nèi)容一、數(shù)據(jù)類型數(shù)據(jù)成分運(yùn)算成分青島農(nóng)業(yè)大學(xué)理信學(xué)院3一、數(shù)據(jù)類型C語(yǔ)言的數(shù)據(jù)類型構(gòu)造類型指針類型*空類型(無(wú)值類型)void枚舉類型enum數(shù)組類型結(jié)構(gòu)類型struct聯(lián)合類型union基本類型整型int字符型char實(shí)型(浮點(diǎn)型)單精度實(shí)型float雙精度實(shí)型double青島農(nóng)業(yè)大學(xué)理信學(xué)院一、數(shù)據(jù)類型C語(yǔ)言的構(gòu)造類型指針類型*空類型(無(wú)值類4二、變量與常量常量:指在程序運(yùn)行過(guò)程中,值不能發(fā)生變化的量。常量可以有不同類型:比如,這些常量稱為字面常量或直接常量整型100,125,-100,0實(shí)型3.14,0.125,-3.789字符型‘a(chǎn)’,‘b’,‘2’字符串“a”,“ab”,“1232”青島農(nóng)業(yè)大學(xué)理信學(xué)院二、變量與常量常量:指在程序運(yùn)行過(guò)程中,值不能發(fā)生變化的量。5符號(hào)常量定義與使用定義:使用#define#definePI3.14使用:area=PI*3*3程序中用#define命令行定義PI代表常量3.14,此后凡在本文件中出現(xiàn)的PI都代表3.14,可以和常量一樣進(jìn)行運(yùn)算。PI=3.1415錯(cuò)誤!常量值不能改變!習(xí)慣上,符號(hào)常量名用大寫,變量名用小寫優(yōu)點(diǎn):含義清楚;一改全改青島農(nóng)業(yè)大學(xué)理信學(xué)院符號(hào)常量定義與使用定義:使用#define青島農(nóng)業(yè)大學(xué)理信學(xué)6例3.1#definePRICE30#include<stdio.h>voidmain(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);}青島農(nóng)業(yè)大學(xué)理信學(xué)院例3.1#definePRICE30青島農(nóng)業(yè)大學(xué)理信7變量變量:程序運(yùn)行期間值可以發(fā)生改變的量。變量代表內(nèi)存中具有特定屬性的一個(gè)存儲(chǔ)單元,它用來(lái)存放數(shù)據(jù),這就是變量的值。青島農(nóng)業(yè)大學(xué)理信學(xué)院變量變量:程序運(yùn)行期間值可以發(fā)生改變的量。變量代表內(nèi)存中具有8變量名實(shí)際上是一個(gè)以一個(gè)名字對(duì)應(yīng)代表一個(gè)地址。在對(duì)程序編譯連接時(shí)由編譯系統(tǒng)給每一個(gè)變量名分配對(duì)應(yīng)的內(nèi)存地址。從變量中取值,實(shí)際上是通過(guò)變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)。青島農(nóng)業(yè)大學(xué)理信學(xué)院變量名實(shí)際上是一個(gè)以一個(gè)名字對(duì)應(yīng)代表一個(gè)地址。青島農(nóng)業(yè)大學(xué)理9變量定義數(shù)據(jù)類型變量名;比如,inta;floatx,y;青島農(nóng)業(yè)大學(xué)理信學(xué)院變量定義數(shù)據(jù)類型變量名;青島農(nóng)業(yè)大學(xué)理信學(xué)院10變量命名變量命名的規(guī)定:C語(yǔ)言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。變量名不能與關(guān)鍵字重名

例:sum,_total,month,Student_name,lotus_1_2_3,BASIC,li_ling

M.D.John,¥123,3D64,a>b

青島農(nóng)業(yè)大學(xué)理信學(xué)院變量命名變量命名的規(guī)定:C語(yǔ)言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下11注意:C語(yǔ)言區(qū)分大小寫,即:ABC與Abc認(rèn)為是兩個(gè)不同的變量。建議變量名的長(zhǎng)度最好不要超過(guò)8個(gè)字符。在選擇變量名和其它標(biāo)識(shí)符時(shí),應(yīng)注意做到“見名知意”,即選有含意的英文單詞(或其縮寫)作標(biāo)識(shí)符。(intStu)要求對(duì)所有用到的變量作強(qiáng)制定義,也就是“先定義,后使用”。青島農(nóng)業(yè)大學(xué)理信學(xué)院注意:C語(yǔ)言區(qū)分大小寫,即:ABC與Abc認(rèn)為是兩個(gè)不同的變12補(bǔ)充——C語(yǔ)言的關(guān)鍵字(附錄B)關(guān)鍵字(keywords)是C語(yǔ)言預(yù)定義的詞法符號(hào),具有固定含義和用途,不能作為標(biāo)識(shí)符使用。C語(yǔ)言的關(guān)鍵字:autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile

注意,關(guān)鍵字必須小寫。青島農(nóng)業(yè)大學(xué)理信學(xué)院補(bǔ)充——C語(yǔ)言的關(guān)鍵字(附錄B)關(guān)鍵字(keyword131、整型數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的,整型數(shù)據(jù)占用兩個(gè)字節(jié)的空間(TurboC2.0及TurboC++3.0中為兩個(gè)字節(jié),教材例子也假定整型占兩個(gè)字節(jié),但是在VC++6.0中則分配4個(gè)字節(jié))。數(shù)據(jù)采用補(bǔ)碼形式表示。青島農(nóng)業(yè)大學(xué)理信學(xué)院1、整型數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的,整型數(shù)據(jù)占用兩個(gè)字141)整型常量十進(jìn)制整數(shù)123,-123八進(jìn)制整數(shù)。以0開頭的數(shù)0123,-0123十六進(jìn)制整數(shù)以0x開頭的數(shù)0x1A,-0xFD青島農(nóng)業(yè)大學(xué)理信學(xué)院1)整型常量十進(jìn)制整數(shù)青島農(nóng)業(yè)大學(xué)理信學(xué)院152)整型變量

整型變量在內(nèi)存中的存放形式整型數(shù)據(jù)在內(nèi)存中的存放形式數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的實(shí)際上,數(shù)值是以補(bǔ)碼(complement)表示的。+10在內(nèi)存中的存放青島農(nóng)業(yè)大學(xué)理信學(xué)院2)整型變量

整型變量在內(nèi)存中的存放形式+10在內(nèi)存中的存放16-10在內(nèi)存中的存放青島農(nóng)業(yè)大學(xué)理信學(xué)院-10在內(nèi)存中的存放青島農(nóng)業(yè)大學(xué)理信學(xué)院17整型變量的分類基本整型int短整型shortint長(zhǎng)整型longint三者區(qū)別在于:可以表示的整數(shù)范圍不同。青島農(nóng)業(yè)大學(xué)理信學(xué)院整型變量的分類基本整型int青島農(nóng)業(yè)大學(xué)理信學(xué)院18類型類型說(shuō)明符長(zhǎng)度數(shù)的范圍基本型int2字節(jié)-32768~32767短整型short2字節(jié)-215~215-1長(zhǎng)整型long4字節(jié)-231~231-1青島農(nóng)業(yè)大學(xué)理信學(xué)院類型類型說(shuō)明符長(zhǎng)度19整型的符號(hào)整型數(shù)據(jù)還有有符號(hào)數(shù)和無(wú)符號(hào)數(shù)之分。signedunsigned青島農(nóng)業(yè)大學(xué)理信學(xué)院整型的符號(hào)整型數(shù)據(jù)還有有符號(hào)數(shù)和無(wú)符號(hào)數(shù)之分。signedu20整型共六種有符號(hào)基本整型有符號(hào)短整型有符號(hào)長(zhǎng)整型無(wú)符號(hào)基本整型無(wú)符號(hào)短整型無(wú)符號(hào)長(zhǎng)整型(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int)

注意:括號(hào)表示其中的內(nèi)容是可選的。青島農(nóng)業(yè)大學(xué)理信學(xué)院整型共六種有符號(hào)基本整型(signed)int注意:括21整數(shù)(13為例)在存儲(chǔ)單元中的存儲(chǔ)情況青島農(nóng)業(yè)大學(xué)理信學(xué)院整數(shù)(13為例)在存儲(chǔ)單元中的存儲(chǔ)情況青島農(nóng)業(yè)大學(xué)理信學(xué)院223)整型變量的定義和使用定義:inta,b(指定變量a、b為整型)unsignedshortc,d;(指定變量c、d為無(wú)符號(hào)短整型)longe,f;(指定變量e、f為長(zhǎng)整型)對(duì)變量的定義,一般是放在一個(gè)函數(shù)的開頭的聲明部分(也可以放在函數(shù)中某一分程序內(nèi),但作用域只限它所在的分程序)使用:a=12;b=10;c=a+b;賦值語(yǔ)句青島農(nóng)業(yè)大學(xué)理信學(xué)院3)整型變量的定義和使用定義:賦值語(yǔ)句青島農(nóng)業(yè)大學(xué)理信學(xué)院23溢出inta,b;a=32767;b=a+1;0111111111111111a01000000000000000b-32768青島農(nóng)業(yè)大學(xué)理信學(xué)院溢出inta,b;0111111111111111a010244)整型常量的類型整型變量可分為int、shortint、longint和unsignedint、unsignedshort、unsignedlong等類別。那么常量呢?在將一個(gè)整型常量賦值給上述幾種類別的整型變量時(shí)如何做到類型匹配?請(qǐng)注意以下幾點(diǎn):(1)一個(gè)整數(shù),如果其值在-32768~+32767范圍內(nèi),認(rèn)為它是int型,它可以賦值給int型和longint型變量。(2)一個(gè)整數(shù),如果其值超過(guò)了上述范圍,而在-2147483648~+2147483647范圍內(nèi),則認(rèn)為它是長(zhǎng)整型,可以將它賦值給一個(gè)longint型變量。青島農(nóng)業(yè)大學(xué)理信學(xué)院4)整型常量的類型整型變量可分為int、shortint25(3)如果某一計(jì)算機(jī)系統(tǒng)的c版本(例如turboc)確定shortint與int型數(shù)據(jù)在內(nèi)存中占據(jù)的長(zhǎng)度相同,則它的表數(shù)范圍與int型相同。因此,一個(gè)int型的常量也同時(shí)是一個(gè)shortint型常量,可以賦給int型或shortint型變量。(4)一個(gè)整常量后面加一個(gè)字母u,認(rèn)為是unsignedint型,如12345u,在內(nèi)存中按unsignedint規(guī)定的方式存放。如果寫成-12345u,則先將-12345轉(zhuǎn)換成其補(bǔ)碼53191,然后按無(wú)符號(hào)數(shù)存儲(chǔ)。(5)整常量后加一個(gè)字母l或L,則認(rèn)為是longint型常量。例如123l、432l、0l等,這往往用于函數(shù)調(diào)用中。如果函數(shù)的形參為longint型,則要求實(shí)參也為longint型,此時(shí)用123作實(shí)參不行,而要用123l作實(shí)參。青島農(nóng)業(yè)大學(xué)理信學(xué)院(3)如果某一計(jì)算機(jī)系統(tǒng)的c版本(例如turboc)確定262、浮點(diǎn)型1)浮點(diǎn)型常量?jī)煞N表示形式小數(shù)指數(shù)0.1233e-3注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù):1e3、1.8e-3、-123e-6、-0.1e-3e3、2.1e3.5、.e3、e

青島農(nóng)業(yè)大學(xué)理信學(xué)院2、浮點(diǎn)型1)浮點(diǎn)型常量?jī)煞N表小數(shù)0.123注意:字母e(或27規(guī)范化的指數(shù)形式字母e之前的小數(shù)中,小數(shù)點(diǎn)左邊有且僅有一位非零數(shù)字。例如:123.456可以表示為:123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e其中的1.23456e2稱為“規(guī)范化的指數(shù)形式”。青島農(nóng)業(yè)大學(xué)理信學(xué)院規(guī)范化的指數(shù)形式字母e之前的小數(shù)中,小數(shù)點(diǎn)左邊有且僅有一位非28浮點(diǎn)數(shù)在內(nèi)存中的存放一個(gè)浮點(diǎn)型數(shù)據(jù)一般在內(nèi)存中占4個(gè)字節(jié)(32位)。分為小數(shù)部分和指數(shù)部分,分別存放。青島農(nóng)業(yè)大學(xué)理信學(xué)院浮點(diǎn)數(shù)在內(nèi)存中的存放一個(gè)浮點(diǎn)型數(shù)據(jù)一般在內(nèi)存中占4個(gè)字節(jié)(3292)浮點(diǎn)型變量單精度型float雙精度型double長(zhǎng)雙精度型longdouble類型位數(shù)數(shù)的范圍有效數(shù)字float3210-37~10386~7位double型6410-307~1030815~16位longdouble12810-4931~10493218~19位青島農(nóng)業(yè)大學(xué)理信學(xué)院2)浮點(diǎn)型變量單精度型float類型位30浮點(diǎn)型數(shù)據(jù)的舍入誤差例3.4main(){floata,b;a=123456,789e5;b=a+20;printf("%f",b);}運(yùn)行程序得到的a和b的值是12345678848.000000只有7位有效數(shù)字時(shí)準(zhǔn)確的因此,避免將一個(gè)很大的數(shù)和很小的數(shù)相加減青島農(nóng)業(yè)大學(xué)理信學(xué)院浮點(diǎn)型數(shù)據(jù)的舍入誤差例3.4青島農(nóng)業(yè)大學(xué)理信學(xué)院31浮點(diǎn)型常量的運(yùn)算C編譯系統(tǒng)將實(shí)型常量作為雙精度來(lái)處理。例如已定義一個(gè)實(shí)型變量f,有如下語(yǔ)句:f=2.45678*4523.65系統(tǒng)將2.45678和4523.65按雙精度數(shù)據(jù)存儲(chǔ)(占64位)和運(yùn)算,得到一個(gè)雙精度的乘積,然后取前7位賦給實(shí)型變量f。(除非在數(shù)據(jù)后加F或f)一個(gè)實(shí)型常量可以賦給一個(gè)float型、double型或longdouble變量。根據(jù)變量的類型截取實(shí)型常量中相應(yīng)的有效位數(shù)字。例如,floata;a=111111.111;由于float型變量只能接收7位有效數(shù)字青島農(nóng)業(yè)大學(xué)理信學(xué)院浮點(diǎn)型常量的運(yùn)算C編譯系統(tǒng)將實(shí)型常量作為雙精度來(lái)處理。例如已323、字符型1)字符常量:?jiǎn)我?hào)括起來(lái)的一個(gè)字符比如,‘a(chǎn)’‘?’注意:‘a(chǎn)’與‘A’是兩個(gè)不同的字符常量。例‘a(chǎn)’,’A’,‘1’‘a(chǎn)bc’、“a”青島農(nóng)業(yè)大學(xué)理信學(xué)院3、字符型1)字符常量:?jiǎn)我?hào)括起來(lái)的一個(gè)字符例‘a(chǎn)’,’A33補(bǔ)充——C語(yǔ)言的字符集(附錄A)

C的字符集(characterset)是ASCII碼的子集。標(biāo)準(zhǔn)ASCII碼從0~127,共128個(gè)字符。0~31和127是控制字符,屬不可見字符。32~126是可見字符。以下字符的碼值要記憶:32--空格’’48--’0’65--’A’97--’a’擴(kuò)展ASCII碼,從0~255,共256個(gè)字符。128~255是圖形符號(hào)。青島農(nóng)業(yè)大學(xué)理信學(xué)院補(bǔ)充——C語(yǔ)言的字符集(附錄A)C的字符集(chara34特殊的字符常量——轉(zhuǎn)義字符以\開頭的字符序列,稱為轉(zhuǎn)義字符。\n換行\(zhòng)b退格\t橫向跳格\f換頁(yè)\r回車\\反斜杠\’單引號(hào)\”雙引號(hào)\dddddd表示1到3位八進(jìn)制數(shù)字\xhhhh表示1到2位十六進(jìn)制數(shù)字青島農(nóng)業(yè)大學(xué)理信學(xué)院特殊的字符常量——轉(zhuǎn)義字符以\開頭的字符序列,稱為轉(zhuǎn)義字符。35轉(zhuǎn)義字符的使用例3.5main(){printf("abc\tde\rf\tg\n");printf("h\ti\b\bjk");}青島農(nóng)業(yè)大學(xué)理信學(xué)院轉(zhuǎn)義字符的使用例3.5青島農(nóng)業(yè)大學(xué)理信學(xué)院362)字符變量定義:charc;使用:c=‘a(chǎn)’;青島農(nóng)業(yè)大學(xué)理信學(xué)院2)字符變量定義:青島農(nóng)業(yè)大學(xué)理信學(xué)院37字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)一個(gè)字符變量在內(nèi)存中占用一個(gè)字節(jié)。內(nèi)存中實(shí)際存儲(chǔ)的并不是字符本身,而是字符的ASCII碼。整型數(shù)據(jù)和字符型數(shù)據(jù)存儲(chǔ)形式類似,可以通用。青島農(nóng)業(yè)大學(xué)理信學(xué)院字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)一個(gè)字符變量在內(nèi)存中占用一個(gè)字節(jié)。青島38例3.6向字符變量賦以整數(shù)charc1,c2;c1=97;c2=98;printf(“%c%c\n”,c1,c2);printf(“%d%d\n”,c1,c2);注意:字符數(shù)據(jù)長(zhǎng)一個(gè)字節(jié),所以最多只能表示0~255范圍內(nèi)的整數(shù)。其第一位還可以被用作符號(hào)位。青島農(nóng)業(yè)大學(xué)理信學(xué)院例3.6向字符變量賦以整數(shù)charc1,c2;注意:字符39例3.7大小寫轉(zhuǎn)換#include<stdio.h>voidmain(){ charc; c=‘a(chǎn)’; c=c-32; printf(“%c”,c);}/*字符數(shù)據(jù)可以和整型數(shù)據(jù)相互賦值*/C語(yǔ)言允許字符數(shù)據(jù)與整數(shù)直接參與算術(shù)運(yùn)算。青島農(nóng)業(yè)大學(xué)理信學(xué)院例3.7大小寫轉(zhuǎn)換#include<stdio.h>C語(yǔ)403)字符串常量用雙引號(hào)括起來(lái)的字符序列如“abc”,“a”C語(yǔ)言規(guī)定:在每個(gè)字符串最后加一個(gè)‘\0’作為字符串結(jié)束標(biāo)記。比如,“CHINA”這個(gè)字符串常量CHINA\0青島農(nóng)業(yè)大學(xué)理信學(xué)院3)字符串常量用雙引號(hào)括起來(lái)的字符序列CHINA\0青島農(nóng)業(yè)41問(wèn)題:“a”與‘a(chǎn)’是否相同?答案是不同?!產(chǎn)’是字符常量,而“a”是字符串常量。“a”相當(dāng)于‘a(chǎn)’+‘\0’結(jié)論:不能把一個(gè)字符串常量賦給一個(gè)字符變量。charc;c=“a”;錯(cuò)!青島農(nóng)業(yè)大學(xué)理信學(xué)院?jiǎn)栴}:“a”與‘a(chǎn)’青島農(nóng)業(yè)大學(xué)理信學(xué)院42在c語(yǔ)言中沒有專門的字符串變量。如果想將一個(gè)字符串存放在變量中,以便保存,必須使用字符數(shù)組,即用一個(gè)字符型數(shù)組來(lái)存放一個(gè)字符串,數(shù)組中每一個(gè)元素存放一個(gè)字符。青島農(nóng)業(yè)大學(xué)理信學(xué)院在c語(yǔ)言中沒有專門的字符串變量。如果想將一個(gè)字符串存放在變量434、變量賦初值C語(yǔ)言允許在定義變量的同時(shí)使變量初始化。比如,inta=3;相當(dāng)于inta;a=3;charc=‘a(chǎn)’;inta,b,c=10;只對(duì)一部分變量賦初值inta=1,b=1,c=1; 不要寫成inta=b=c=1;錯(cuò)!青島農(nóng)業(yè)大學(xué)理信學(xué)院4、變量賦初值C語(yǔ)言允許在定義變量的同時(shí)使變量初始化。青島農(nóng)44三、運(yùn)算符與表達(dá)式(1)算術(shù)運(yùn)算符+-*/%(2)關(guān)系運(yùn)算符><==>=<=!=(3)邏輯運(yùn)算符?。Γ|(4)位運(yùn)算符<<>>~|∧&(5)賦值運(yùn)算符=及其擴(kuò)展賦值運(yùn)算符(6)條件運(yùn)算符?:(7)逗號(hào)運(yùn)算符,(8)指針運(yùn)算符*和&(9)求字節(jié)數(shù)運(yùn)算符sizeof(10)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(類型))(11)分量運(yùn)算符.->(12)下標(biāo)運(yùn)算符[](13)其他如函數(shù)調(diào)用運(yùn)算符()表達(dá)式:使用運(yùn)算符和括號(hào)將變量、常量等操作數(shù)連接起來(lái)的,符合C語(yǔ)法規(guī)則的式子,稱為表達(dá)式。青島農(nóng)業(yè)大學(xué)理信學(xué)院三、運(yùn)算符與表達(dá)式(1)算術(shù)運(yùn)算符+-*/%(8)451、算術(shù)運(yùn)算符與算術(shù)表達(dá)式+加法運(yùn)算符,或正值運(yùn)算符,如:3+5、+3-減法運(yùn)算符,或負(fù)值運(yùn)算符,如:5-2、-3*乘法運(yùn)算符,如:3*5/除法運(yùn)算符,如:5/3%模運(yùn)算符,或稱求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如:7%4的值為3優(yōu)先級(jí):運(yùn)算按照優(yōu)先級(jí)由高到低進(jìn)行結(jié)合方向(結(jié)合性):從左至右,也稱為左結(jié)合性青島農(nóng)業(yè)大學(xué)理信學(xué)院1、算術(shù)運(yùn)算符與算術(shù)表達(dá)式+加法運(yùn)算符,或正值運(yùn)算符,如:46算術(shù)運(yùn)算符優(yōu)先級(jí)和結(jié)合性(附錄C)表達(dá)式求值的普遍順序(從左向右掃描):圓括號(hào)()先內(nèi)圓括號(hào),后外圓括號(hào);函數(shù)引用運(yùn)算符優(yōu)先級(jí)不同,先做優(yōu)先級(jí)高的操作,然后做優(yōu)先級(jí)低的操作;運(yùn)算符優(yōu)先級(jí)相同,按結(jié)合性處理;青島農(nóng)業(yè)大學(xué)理信學(xué)院算術(shù)運(yùn)算符優(yōu)先級(jí)和結(jié)合性(附錄C)表達(dá)式求值的普遍順序(從左47類型轉(zhuǎn)換自動(dòng)類型轉(zhuǎn)換如果運(yùn)算符兩側(cè)的數(shù)據(jù)類型不同,先進(jìn)行自動(dòng)類型轉(zhuǎn)換,再進(jìn)行運(yùn)算。強(qiáng)制類型轉(zhuǎn)換形式:(類型名)(表達(dá)式)short、chardoublefloatlongunsignedint高低青島農(nóng)業(yè)大學(xué)理信學(xué)院類型轉(zhuǎn)換自動(dòng)類型轉(zhuǎn)換short、chardoublefloa48例floatx;inti,j;x=3.6i=(int)x;j=(int)x%2;i的值是多少?j的值是多少?x的值是多少?青島農(nóng)業(yè)大學(xué)理信學(xué)院例floatx;i的值是多少?青島農(nóng)業(yè)大學(xué)理信學(xué)院49自增、自減運(yùn)算符自增++自減--作用:使變量的值增1或者減1這兩個(gè)運(yùn)算符只用于變量,而不用于常量和表達(dá)式。例如,5++,(a+b)++

不合法!結(jié)合方向是“自右至左”,例如-i++青島農(nóng)業(yè)大學(xué)理信學(xué)院自增、自減運(yùn)算符自增++青島農(nóng)業(yè)大學(xué)理信學(xué)院50注意i++和++i的不同i++先使用i的值,再將i加1++i先將i加1,再使用i的值例子:i=3;j=i++;j=++i;青島農(nóng)業(yè)大學(xué)理信學(xué)院注意i++和++i的不同i++青島農(nóng)業(yè)大學(xué)理信學(xué)院51有關(guān)表達(dá)式使用中的問(wèn)題說(shuō)明歧義問(wèn)題書寫程序,注意避免歧義青島農(nóng)業(yè)大學(xué)理信學(xué)院有關(guān)表達(dá)式使用中的問(wèn)題說(shuō)明歧義問(wèn)題青島農(nóng)業(yè)大學(xué)理信學(xué)院522、賦值運(yùn)算符和賦值表達(dá)式1)賦值運(yùn)算符=作用:將右邊的數(shù)據(jù)賦給左邊的變量i=3i=x+y青島農(nóng)業(yè)大學(xué)理信學(xué)院2、賦值運(yùn)算符和賦值表達(dá)式1)賦值運(yùn)算符=青島農(nóng)業(yè)大學(xué)理信532)類型轉(zhuǎn)換如果賦值運(yùn)算符兩側(cè)類型不一致,但都是數(shù)值型或字符型時(shí),賦值時(shí)會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換。將實(shí)型數(shù)據(jù)(包括單、雙精度)賦給整型變量時(shí),舍棄實(shí)數(shù)的小數(shù)部分。將整型數(shù)據(jù)賦給單、雙精度變量時(shí),數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲(chǔ)到變量中。將一個(gè)double型數(shù)據(jù)賦給float變量時(shí),截取其前面7位有效數(shù)字,存放到float變量的存儲(chǔ)單元(32位)中。但應(yīng)注意數(shù)值范圍不能溢出。將一個(gè)float型數(shù)據(jù)賦給double變量時(shí),數(shù)值不變,有效位數(shù)擴(kuò)展到16位,在內(nèi)存中以64位(bit)存儲(chǔ)。青島農(nóng)業(yè)大學(xué)理信學(xué)院2)類型轉(zhuǎn)換如果賦值運(yùn)算符兩側(cè)類型不一致,但都是數(shù)值型或字符54(4)字符型數(shù)據(jù)賦給整型變量時(shí),由于字符只占1個(gè)字節(jié),需考慮是否有符號(hào),有符號(hào)位需“符號(hào)擴(kuò)展”。unsignedsigned青島農(nóng)業(yè)大學(xué)理信學(xué)院(4)字符型數(shù)據(jù)賦給整型變量時(shí),由于字符只占1個(gè)字節(jié),需考55(5)將一個(gè)int、short、long型數(shù)據(jù)賦給一個(gè)char型變量時(shí),只將其低8位原封不動(dòng)地送到char型變量(即截?cái)?。青島農(nóng)業(yè)大學(xué)理信學(xué)院(5)將一個(gè)int、short、long型數(shù)據(jù)賦給一個(gè)ch56(6)將帶符號(hào)的整型數(shù)據(jù)(int型)賦給long型變量時(shí),要進(jìn)行符號(hào)擴(kuò)展。反之,若將一個(gè)long型數(shù)據(jù)賦給一個(gè)int型變量,只將long型數(shù)據(jù)中低16位原封不動(dòng)地送到整型變量(即截?cái)?。青島農(nóng)業(yè)大學(xué)理信學(xué)院(6)將帶符號(hào)的整型數(shù)據(jù)(int型)賦給long型變量時(shí),57(7)將unsignedint型數(shù)據(jù)賦給longint型變量時(shí),不存在符號(hào)擴(kuò)展問(wèn)題,只需將高位補(bǔ)0即可。將一個(gè)unsigned類型數(shù)據(jù)賦給一個(gè)占字節(jié)數(shù)相同的整型變量(例如:unsignedint=>int,unsignedlong=>long,unsignedshort=>short),將unsigned型變量的內(nèi)容原樣送到非unsigned型變量中,但如果數(shù)據(jù)范圍超過(guò)相應(yīng)整型的范圍,則會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)誤。將非unsigned型數(shù)據(jù)賦給長(zhǎng)度相同的unsigned型變量,也是原樣照賦(連原有的符號(hào)位也作為數(shù)值一起傳送)。青島農(nóng)業(yè)大學(xué)理信學(xué)院(7)將unsignedint型數(shù)據(jù)賦給longint58青島農(nóng)業(yè)大學(xué)理信學(xué)院青島農(nóng)業(yè)大學(xué)理信學(xué)院593)復(fù)合的賦值運(yùn)算符賦值運(yùn)算符前面加上其它運(yùn)算符,就構(gòu)成復(fù)合的賦值運(yùn)算符;如+=-=等例子:a+=3等價(jià)于a=a+3x*=y+8等價(jià)于x=x*(y+8)x%=3等價(jià)于x=x%3以“a+=3”為例來(lái)說(shuō)明,它相當(dāng)于使a進(jìn)行一次自加3的操作。即先使a加3,再賦給a。青島農(nóng)業(yè)大學(xué)理信學(xué)院3)復(fù)合的賦值運(yùn)算符賦值運(yùn)算符前面加上其它運(yùn)算符,就構(gòu)成復(fù)合60

C語(yǔ)言規(guī)定可以使用10種復(fù)合賦值運(yùn)算符:+=,-=,*=,/=,%=,<<=,>>=,&=,∧=,|=

青島農(nóng)業(yè)大學(xué)理信學(xué)院C語(yǔ)言規(guī)定可以使用10種復(fù)合賦值運(yùn)算符:青島農(nóng)業(yè)大學(xué)理信學(xué)614)賦值表達(dá)式由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子稱為“賦值表達(dá)式”。一般形式為<變量><賦值運(yùn)算符><表達(dá)式>

比如a=3就是一個(gè)賦值表達(dá)式青島農(nóng)業(yè)大學(xué)理信學(xué)院4)賦值表達(dá)式由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式62賦值表達(dá)式的值①求賦值運(yùn)算符右側(cè)的“表達(dá)式”的值;②賦給賦值運(yùn)算符左側(cè)的變量;③賦值表達(dá)式的值就是右側(cè)的計(jì)算結(jié)果。例子:a=3*5青島農(nóng)業(yè)大學(xué)理信學(xué)院賦值表達(dá)式的值①求賦值運(yùn)算符右側(cè)的“表達(dá)式”的值;青島農(nóng)業(yè)大63左值和右值左值(lvalue):賦值運(yùn)算符左側(cè)的標(biāo)識(shí)符變量可以作為左值;而表達(dá)式就不能作為左值(如a+b);常變量也不能作為左值。

右值(rvalue):出現(xiàn)在賦值運(yùn)算符右側(cè)的表達(dá)式左值也可以出現(xiàn)在賦值運(yùn)算符右側(cè),因而左值都可以作為右值。青島農(nóng)業(yè)大學(xué)理信學(xué)院左值和右值左值(lvalue):賦值運(yùn)算符左側(cè)的標(biāo)識(shí)符右64賦值表達(dá)式中的“表達(dá)式”,又可以是一個(gè)賦值表達(dá)式。

例如:a=(b=5)分析:括弧內(nèi)的“b=5”是一個(gè)賦值表達(dá)式,它的值等于5。執(zhí)行表達(dá)式“a=(b=5)”相當(dāng)于執(zhí)行“b=5”和“a=b”兩個(gè)賦值表達(dá)式。賦值運(yùn)算符按照“自右而左”的結(jié)合順序,因此,“(b=5)”外面的括弧可以不要,即“a=(b=5)”和“a=b=5”等價(jià)。青島農(nóng)業(yè)大學(xué)理信學(xué)院賦值表達(dá)式中的“表達(dá)式”,又可以是一個(gè)賦值表分析:括弧內(nèi)的65賦值表達(dá)式∶(a=3*5)=4*3分析:先執(zhí)行括弧內(nèi)的運(yùn)算,將15賦給a,然后執(zhí)行4*3的運(yùn)算,得12,再把12賦給a。最后a的值為12,整個(gè)表達(dá)式的值為12。可以看到∶(a=3*5)出現(xiàn)在賦值運(yùn)算符的左側(cè),因此賦值表達(dá)式(a=3*5)是左值注意:在對(duì)賦值表達(dá)式(a=3*5)求解后,變量a得到值15執(zhí)行(a=3*5)=4*3時(shí),實(shí)際上是將4*3的積12賦給變量a,而不是賦給3*5。不能寫成:a=3*5=4*3青島農(nóng)業(yè)大學(xué)理信學(xué)院賦值表達(dá)式∶(a=3*5)=4*3分析:先執(zhí)行括弧內(nèi)的運(yùn)算,66賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符。

如:a+=a-=a*a分析:此賦值表達(dá)式的求解步驟如下∶①先進(jìn)行“a-=a*a”的運(yùn)算,它相當(dāng)于a=a-a*a,a的值為12-144=-132。②再進(jìn)行“a+=-132”的運(yùn)算,相當(dāng)于a=a+(-132),a的值為-132-132=-264。青島農(nóng)業(yè)大學(xué)理信學(xué)院賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符。分析:此賦值表達(dá)式的求67將賦值表達(dá)式作為表達(dá)式的一種,使賦值操作不僅可以出現(xiàn)在賦值語(yǔ)句中,而且可以以表達(dá)式形式出現(xiàn)在其他語(yǔ)句(如輸出語(yǔ)句、循環(huán)語(yǔ)句等)中。如:printf("%d",a=b);

分析:如果b的值為3,則輸出a的值(也是表達(dá)式a=b的值)為3。在一個(gè)語(yǔ)句中完成了賦值和輸出雙重功能。青島農(nóng)業(yè)大學(xué)理信學(xué)院將賦值表達(dá)式作為表達(dá)式的一種,使賦值操作不僅可以出現(xiàn)68逗號(hào)運(yùn)算符:將兩個(gè)表達(dá)式連接起來(lái),又稱為“順序求值運(yùn)算符”

如:3+5,6+8

一般形式:

表達(dá)式1,表達(dá)式2求解過(guò)程:先求解表達(dá)式1,再求解表達(dá)式2。整個(gè)逗號(hào)表達(dá)式的值是表達(dá)式2的值。

逗號(hào)表達(dá)式的值為143、逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式青島農(nóng)業(yè)大學(xué)理信學(xué)院逗號(hào)運(yùn)算符:將兩個(gè)表達(dá)式連接起來(lái),又稱為“順序求一般形69例:逗號(hào)表達(dá)式a=3*5,a*4

分析:賦值運(yùn)算符的優(yōu)先級(jí)別高于逗號(hào)運(yùn)算符,因此應(yīng)先求解a=3*5。a的值為15,然后求解a*4,得60。整個(gè)逗號(hào)表達(dá)式的值為60。

一個(gè)逗號(hào)表達(dá)式又可以與另一個(gè)表達(dá)式組成一個(gè)新的逗號(hào)表達(dá)式如:(a=3*5,a*4),a+5先計(jì)算出a的值等于15,再進(jìn)行a*4的運(yùn)算得60(但a值未變,仍為15),再進(jìn)行a+5得20,即整個(gè)表達(dá)式的值為20。青島農(nóng)業(yè)大學(xué)理信學(xué)院例:逗號(hào)表達(dá)式a=3*5,a*4分析:賦值運(yùn)算符的優(yōu)先級(jí)別70逗號(hào)表達(dá)式的一般形式可以擴(kuò)展為

表達(dá)式1,表達(dá)式2,表達(dá)式3,……,表達(dá)式n它的值為表達(dá)式n的值。逗號(hào)運(yùn)算符是所有運(yùn)算符中級(jí)別最低的例:①x=(a=3,6*3)②x=a=3,6*3賦值表達(dá)式,將一個(gè)逗號(hào)表達(dá)式的值賦給x,x的值等于18逗號(hào)表達(dá)式,包括一個(gè)賦值表達(dá)式和一個(gè)算術(shù)表達(dá)式,x的值為3,整個(gè)逗號(hào)表達(dá)式的值為18。青島農(nóng)業(yè)大學(xué)理信學(xué)院逗號(hào)表達(dá)式的一般形式可以擴(kuò)展為逗號(hào)運(yùn)算符是所有運(yùn)算符中級(jí)別最71注意:并不是任何地方出現(xiàn)的逗號(hào)都是作為逗號(hào)運(yùn)算符。例如函數(shù)參數(shù)也是用逗號(hào)來(lái)間隔的。如:printf(“%d,%d,%d”,a,b,c);“a,b,c”并不是一個(gè)逗號(hào)表達(dá)式,它是printf函數(shù)的3個(gè)參數(shù)printf(“%d,%d,%d”,(a,b,c),b,c)“(a,b,c)”是一個(gè)逗號(hào)表達(dá)式,它的值等于c的值。青島農(nóng)業(yè)大學(xué)理信學(xué)院注意:并不是任何地方出現(xiàn)的逗號(hào)都是作為逗號(hào)運(yùn)算符。例如函數(shù)參72第三章數(shù)據(jù)類型、運(yùn)算符

與表達(dá)式第三章數(shù)據(jù)類型、運(yùn)算符

與表達(dá)式73算法處理的對(duì)象是數(shù)據(jù)。數(shù)據(jù)是以某種特定的形式存在的,如整數(shù)、實(shí)數(shù)、字符等。所謂數(shù)據(jù)結(jié)構(gòu),就是指數(shù)據(jù)的組織形式。完整的程序設(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法

+程序設(shè)計(jì)方法+語(yǔ)言工具青島農(nóng)業(yè)大學(xué)理信學(xué)院算法處理的對(duì)象是數(shù)據(jù)。完整的程序設(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法

+程序74主要內(nèi)容一、數(shù)據(jù)類型二、變量與常量三、運(yùn)算符四、表達(dá)式數(shù)據(jù)成分運(yùn)算成分青島農(nóng)業(yè)大學(xué)理信學(xué)院主要內(nèi)容一、數(shù)據(jù)類型數(shù)據(jù)成分運(yùn)算成分青島農(nóng)業(yè)大學(xué)理信學(xué)院75一、數(shù)據(jù)類型C語(yǔ)言的數(shù)據(jù)類型構(gòu)造類型指針類型*空類型(無(wú)值類型)void枚舉類型enum數(shù)組類型結(jié)構(gòu)類型struct聯(lián)合類型union基本類型整型int字符型char實(shí)型(浮點(diǎn)型)單精度實(shí)型float雙精度實(shí)型double青島農(nóng)業(yè)大學(xué)理信學(xué)院一、數(shù)據(jù)類型C語(yǔ)言的構(gòu)造類型指針類型*空類型(無(wú)值類76二、變量與常量常量:指在程序運(yùn)行過(guò)程中,值不能發(fā)生變化的量。常量可以有不同類型:比如,這些常量稱為字面常量或直接常量整型100,125,-100,0實(shí)型3.14,0.125,-3.789字符型‘a(chǎn)’,‘b’,‘2’字符串“a”,“ab”,“1232”青島農(nóng)業(yè)大學(xué)理信學(xué)院二、變量與常量常量:指在程序運(yùn)行過(guò)程中,值不能發(fā)生變化的量。77符號(hào)常量定義與使用定義:使用#define#definePI3.14使用:area=PI*3*3程序中用#define命令行定義PI代表常量3.14,此后凡在本文件中出現(xiàn)的PI都代表3.14,可以和常量一樣進(jìn)行運(yùn)算。PI=3.1415錯(cuò)誤!常量值不能改變!習(xí)慣上,符號(hào)常量名用大寫,變量名用小寫優(yōu)點(diǎn):含義清楚;一改全改青島農(nóng)業(yè)大學(xué)理信學(xué)院符號(hào)常量定義與使用定義:使用#define青島農(nóng)業(yè)大學(xué)理信學(xué)78例3.1#definePRICE30#include<stdio.h>voidmain(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);}青島農(nóng)業(yè)大學(xué)理信學(xué)院例3.1#definePRICE30青島農(nóng)業(yè)大學(xué)理信79變量變量:程序運(yùn)行期間值可以發(fā)生改變的量。變量代表內(nèi)存中具有特定屬性的一個(gè)存儲(chǔ)單元,它用來(lái)存放數(shù)據(jù),這就是變量的值。青島農(nóng)業(yè)大學(xué)理信學(xué)院變量變量:程序運(yùn)行期間值可以發(fā)生改變的量。變量代表內(nèi)存中具有80變量名實(shí)際上是一個(gè)以一個(gè)名字對(duì)應(yīng)代表一個(gè)地址。在對(duì)程序編譯連接時(shí)由編譯系統(tǒng)給每一個(gè)變量名分配對(duì)應(yīng)的內(nèi)存地址。從變量中取值,實(shí)際上是通過(guò)變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)。青島農(nóng)業(yè)大學(xué)理信學(xué)院變量名實(shí)際上是一個(gè)以一個(gè)名字對(duì)應(yīng)代表一個(gè)地址。青島農(nóng)業(yè)大學(xué)理81變量定義數(shù)據(jù)類型變量名;比如,inta;floatx,y;青島農(nóng)業(yè)大學(xué)理信學(xué)院變量定義數(shù)據(jù)類型變量名;青島農(nóng)業(yè)大學(xué)理信學(xué)院82變量命名變量命名的規(guī)定:C語(yǔ)言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。變量名不能與關(guān)鍵字重名

例:sum,_total,month,Student_name,lotus_1_2_3,BASIC,li_ling

M.D.John,¥123,3D64,a>b

青島農(nóng)業(yè)大學(xué)理信學(xué)院變量命名變量命名的規(guī)定:C語(yǔ)言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下83注意:C語(yǔ)言區(qū)分大小寫,即:ABC與Abc認(rèn)為是兩個(gè)不同的變量。建議變量名的長(zhǎng)度最好不要超過(guò)8個(gè)字符。在選擇變量名和其它標(biāo)識(shí)符時(shí),應(yīng)注意做到“見名知意”,即選有含意的英文單詞(或其縮寫)作標(biāo)識(shí)符。(intStu)要求對(duì)所有用到的變量作強(qiáng)制定義,也就是“先定義,后使用”。青島農(nóng)業(yè)大學(xué)理信學(xué)院注意:C語(yǔ)言區(qū)分大小寫,即:ABC與Abc認(rèn)為是兩個(gè)不同的變84補(bǔ)充——C語(yǔ)言的關(guān)鍵字(附錄B)關(guān)鍵字(keywords)是C語(yǔ)言預(yù)定義的詞法符號(hào),具有固定含義和用途,不能作為標(biāo)識(shí)符使用。C語(yǔ)言的關(guān)鍵字:autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile

注意,關(guān)鍵字必須小寫。青島農(nóng)業(yè)大學(xué)理信學(xué)院補(bǔ)充——C語(yǔ)言的關(guān)鍵字(附錄B)關(guān)鍵字(keyword851、整型數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的,整型數(shù)據(jù)占用兩個(gè)字節(jié)的空間(TurboC2.0及TurboC++3.0中為兩個(gè)字節(jié),教材例子也假定整型占兩個(gè)字節(jié),但是在VC++6.0中則分配4個(gè)字節(jié))。數(shù)據(jù)采用補(bǔ)碼形式表示。青島農(nóng)業(yè)大學(xué)理信學(xué)院1、整型數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的,整型數(shù)據(jù)占用兩個(gè)字861)整型常量十進(jìn)制整數(shù)123,-123八進(jìn)制整數(shù)。以0開頭的數(shù)0123,-0123十六進(jìn)制整數(shù)以0x開頭的數(shù)0x1A,-0xFD青島農(nóng)業(yè)大學(xué)理信學(xué)院1)整型常量十進(jìn)制整數(shù)青島農(nóng)業(yè)大學(xué)理信學(xué)院872)整型變量

整型變量在內(nèi)存中的存放形式整型數(shù)據(jù)在內(nèi)存中的存放形式數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的實(shí)際上,數(shù)值是以補(bǔ)碼(complement)表示的。+10在內(nèi)存中的存放青島農(nóng)業(yè)大學(xué)理信學(xué)院2)整型變量

整型變量在內(nèi)存中的存放形式+10在內(nèi)存中的存放88-10在內(nèi)存中的存放青島農(nóng)業(yè)大學(xué)理信學(xué)院-10在內(nèi)存中的存放青島農(nóng)業(yè)大學(xué)理信學(xué)院89整型變量的分類基本整型int短整型shortint長(zhǎng)整型longint三者區(qū)別在于:可以表示的整數(shù)范圍不同。青島農(nóng)業(yè)大學(xué)理信學(xué)院整型變量的分類基本整型int青島農(nóng)業(yè)大學(xué)理信學(xué)院90類型類型說(shuō)明符長(zhǎng)度數(shù)的范圍基本型int2字節(jié)-32768~32767短整型short2字節(jié)-215~215-1長(zhǎng)整型long4字節(jié)-231~231-1青島農(nóng)業(yè)大學(xué)理信學(xué)院類型類型說(shuō)明符長(zhǎng)度91整型的符號(hào)整型數(shù)據(jù)還有有符號(hào)數(shù)和無(wú)符號(hào)數(shù)之分。signedunsigned青島農(nóng)業(yè)大學(xué)理信學(xué)院整型的符號(hào)整型數(shù)據(jù)還有有符號(hào)數(shù)和無(wú)符號(hào)數(shù)之分。signedu92整型共六種有符號(hào)基本整型有符號(hào)短整型有符號(hào)長(zhǎng)整型無(wú)符號(hào)基本整型無(wú)符號(hào)短整型無(wú)符號(hào)長(zhǎng)整型(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int)

注意:括號(hào)表示其中的內(nèi)容是可選的。青島農(nóng)業(yè)大學(xué)理信學(xué)院整型共六種有符號(hào)基本整型(signed)int注意:括93整數(shù)(13為例)在存儲(chǔ)單元中的存儲(chǔ)情況青島農(nóng)業(yè)大學(xué)理信學(xué)院整數(shù)(13為例)在存儲(chǔ)單元中的存儲(chǔ)情況青島農(nóng)業(yè)大學(xué)理信學(xué)院943)整型變量的定義和使用定義:inta,b(指定變量a、b為整型)unsignedshortc,d;(指定變量c、d為無(wú)符號(hào)短整型)longe,f;(指定變量e、f為長(zhǎng)整型)對(duì)變量的定義,一般是放在一個(gè)函數(shù)的開頭的聲明部分(也可以放在函數(shù)中某一分程序內(nèi),但作用域只限它所在的分程序)使用:a=12;b=10;c=a+b;賦值語(yǔ)句青島農(nóng)業(yè)大學(xué)理信學(xué)院3)整型變量的定義和使用定義:賦值語(yǔ)句青島農(nóng)業(yè)大學(xué)理信學(xué)院95溢出inta,b;a=32767;b=a+1;0111111111111111a01000000000000000b-32768青島農(nóng)業(yè)大學(xué)理信學(xué)院溢出inta,b;0111111111111111a010964)整型常量的類型整型變量可分為int、shortint、longint和unsignedint、unsignedshort、unsignedlong等類別。那么常量呢?在將一個(gè)整型常量賦值給上述幾種類別的整型變量時(shí)如何做到類型匹配?請(qǐng)注意以下幾點(diǎn):(1)一個(gè)整數(shù),如果其值在-32768~+32767范圍內(nèi),認(rèn)為它是int型,它可以賦值給int型和longint型變量。(2)一個(gè)整數(shù),如果其值超過(guò)了上述范圍,而在-2147483648~+2147483647范圍內(nèi),則認(rèn)為它是長(zhǎng)整型,可以將它賦值給一個(gè)longint型變量。青島農(nóng)業(yè)大學(xué)理信學(xué)院4)整型常量的類型整型變量可分為int、shortint97(3)如果某一計(jì)算機(jī)系統(tǒng)的c版本(例如turboc)確定shortint與int型數(shù)據(jù)在內(nèi)存中占據(jù)的長(zhǎng)度相同,則它的表數(shù)范圍與int型相同。因此,一個(gè)int型的常量也同時(shí)是一個(gè)shortint型常量,可以賦給int型或shortint型變量。(4)一個(gè)整常量后面加一個(gè)字母u,認(rèn)為是unsignedint型,如12345u,在內(nèi)存中按unsignedint規(guī)定的方式存放。如果寫成-12345u,則先將-12345轉(zhuǎn)換成其補(bǔ)碼53191,然后按無(wú)符號(hào)數(shù)存儲(chǔ)。(5)整常量后加一個(gè)字母l或L,則認(rèn)為是longint型常量。例如123l、432l、0l等,這往往用于函數(shù)調(diào)用中。如果函數(shù)的形參為longint型,則要求實(shí)參也為longint型,此時(shí)用123作實(shí)參不行,而要用123l作實(shí)參。青島農(nóng)業(yè)大學(xué)理信學(xué)院(3)如果某一計(jì)算機(jī)系統(tǒng)的c版本(例如turboc)確定982、浮點(diǎn)型1)浮點(diǎn)型常量?jī)煞N表示形式小數(shù)指數(shù)0.1233e-3注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù):1e3、1.8e-3、-123e-6、-0.1e-3e3、2.1e3.5、.e3、e

青島農(nóng)業(yè)大學(xué)理信學(xué)院2、浮點(diǎn)型1)浮點(diǎn)型常量?jī)煞N表小數(shù)0.123注意:字母e(或99規(guī)范化的指數(shù)形式字母e之前的小數(shù)中,小數(shù)點(diǎn)左邊有且僅有一位非零數(shù)字。例如:123.456可以表示為:123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e其中的1.23456e2稱為“規(guī)范化的指數(shù)形式”。青島農(nóng)業(yè)大學(xué)理信學(xué)院規(guī)范化的指數(shù)形式字母e之前的小數(shù)中,小數(shù)點(diǎn)左邊有且僅有一位非100浮點(diǎn)數(shù)在內(nèi)存中的存放一個(gè)浮點(diǎn)型數(shù)據(jù)一般在內(nèi)存中占4個(gè)字節(jié)(32位)。分為小數(shù)部分和指數(shù)部分,分別存放。青島農(nóng)業(yè)大學(xué)理信學(xué)院浮點(diǎn)數(shù)在內(nèi)存中的存放一個(gè)浮點(diǎn)型數(shù)據(jù)一般在內(nèi)存中占4個(gè)字節(jié)(31012)浮點(diǎn)型變量單精度型float雙精度型double長(zhǎng)雙精度型longdouble類型位數(shù)數(shù)的范圍有效數(shù)字float3210-37~10386~7位double型6410-307~1030815~16位longdouble12810-4931~10493218~19位青島農(nóng)業(yè)大學(xué)理信學(xué)院2)浮點(diǎn)型變量單精度型float類型位102浮點(diǎn)型數(shù)據(jù)的舍入誤差例3.4main(){floata,b;a=123456,789e5;b=a+20;printf("%f",b);}運(yùn)行程序得到的a和b的值是12345678848.000000只有7位有效數(shù)字時(shí)準(zhǔn)確的因此,避免將一個(gè)很大的數(shù)和很小的數(shù)相加減青島農(nóng)業(yè)大學(xué)理信學(xué)院浮點(diǎn)型數(shù)據(jù)的舍入誤差例3.4青島農(nóng)業(yè)大學(xué)理信學(xué)院103浮點(diǎn)型常量的運(yùn)算C編譯系統(tǒng)將實(shí)型常量作為雙精度來(lái)處理。例如已定義一個(gè)實(shí)型變量f,有如下語(yǔ)句:f=2.45678*4523.65系統(tǒng)將2.45678和4523.65按雙精度數(shù)據(jù)存儲(chǔ)(占64位)和運(yùn)算,得到一個(gè)雙精度的乘積,然后取前7位賦給實(shí)型變量f。(除非在數(shù)據(jù)后加F或f)一個(gè)實(shí)型常量可以賦給一個(gè)float型、double型或longdouble變量。根據(jù)變量的類型截取實(shí)型常量中相應(yīng)的有效位數(shù)字。例如,floata;a=111111.111;由于float型變量只能接收7位有效數(shù)字青島農(nóng)業(yè)大學(xué)理信學(xué)院浮點(diǎn)型常量的運(yùn)算C編譯系統(tǒng)將實(shí)型常量作為雙精度來(lái)處理。例如已1043、字符型1)字符常量:?jiǎn)我?hào)括起來(lái)的一個(gè)字符比如,‘a(chǎn)’‘?’注意:‘a(chǎn)’與‘A’是兩個(gè)不同的字符常量。例‘a(chǎn)’,’A’,‘1’‘a(chǎn)bc’、“a”青島農(nóng)業(yè)大學(xué)理信學(xué)院3、字符型1)字符常量:?jiǎn)我?hào)括起來(lái)的一個(gè)字符例‘a(chǎn)’,’A105補(bǔ)充——C語(yǔ)言的字符集(附錄A)

C的字符集(characterset)是ASCII碼的子集。標(biāo)準(zhǔn)ASCII碼從0~127,共128個(gè)字符。0~31和127是控制字符,屬不可見字符。32~126是可見字符。以下字符的碼值要記憶:32--空格’’48--’0’65--’A’97--’a’擴(kuò)展ASCII碼,從0~255,共256個(gè)字符。128~255是圖形符號(hào)。青島農(nóng)業(yè)大學(xué)理信學(xué)院補(bǔ)充——C語(yǔ)言的字符集(附錄A)C的字符集(chara106特殊的字符常量——轉(zhuǎn)義字符以\開頭的字符序列,稱為轉(zhuǎn)義字符。\n換行\(zhòng)b退格\t橫向跳格\f換頁(yè)\r回車\\反斜杠\’單引號(hào)\”雙引號(hào)\dddddd表示1到3位八進(jìn)制數(shù)字\xhhhh表示1到2位十六進(jìn)制數(shù)字青島農(nóng)業(yè)大學(xué)理信學(xué)院特殊的字符常量——轉(zhuǎn)義字符以\開頭的字符序列,稱為轉(zhuǎn)義字符。107轉(zhuǎn)義字符的使用例3.5main(){printf("abc\tde\rf\tg\n");printf("h\ti\b\bjk");}青島農(nóng)業(yè)大學(xué)理信學(xué)院轉(zhuǎn)義字符的使用例3.5青島農(nóng)業(yè)大學(xué)理信學(xué)院1082)字符變量定義:charc;使用:c=‘a(chǎn)’;青島農(nóng)業(yè)大學(xué)理信學(xué)院2)字符變量定義:青島農(nóng)業(yè)大學(xué)理信學(xué)院109字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)一個(gè)字符變量在內(nèi)存中占用一個(gè)字節(jié)。內(nèi)存中實(shí)際存儲(chǔ)的并不是字符本身,而是字符的ASCII碼。整型數(shù)據(jù)和字符型數(shù)據(jù)存儲(chǔ)形式類似,可以通用。青島農(nóng)業(yè)大學(xué)理信學(xué)院字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)一個(gè)字符變量在內(nèi)存中占用一個(gè)字節(jié)。青島110例3.6向字符變量賦以整數(shù)charc1,c2;c1=97;c2=98;printf(“%c%c\n”,c1,c2);printf(“%d%d\n”,c1,c2);注意:字符數(shù)據(jù)長(zhǎng)一個(gè)字節(jié),所以最多只能表示0~255范圍內(nèi)的整數(shù)。其第一位還可以被用作符號(hào)位。青島農(nóng)業(yè)大學(xué)理信學(xué)院例3.6向字符變量賦以整數(shù)charc1,c2;注意:字符111例3.7大小寫轉(zhuǎn)換#include<stdio.h>voidmain(){ charc; c=‘a(chǎn)’; c=c-32; printf(“%c”,c);}/*字符數(shù)據(jù)可以和整型數(shù)據(jù)相互賦值*/C語(yǔ)言允許字符數(shù)據(jù)與整數(shù)直接參與算術(shù)運(yùn)算。青島農(nóng)業(yè)大學(xué)理信學(xué)院例3.7大小寫轉(zhuǎn)換#include<stdio.h>C語(yǔ)1123)字符串常量用雙引號(hào)括起來(lái)的字符序列如“abc”,“a”C語(yǔ)言規(guī)定:在每個(gè)字符串最后加一個(gè)‘\0’作為字符串結(jié)束標(biāo)記。比如,“CHINA”這個(gè)字符串常量CHINA\0青島農(nóng)業(yè)大學(xué)理信學(xué)院3)字符串常量用雙引號(hào)括起來(lái)的字符序列CHINA\0青島農(nóng)業(yè)113問(wèn)題:“a”與‘a(chǎn)’是否相同?答案是不同?!產(chǎn)’是字符常量,而“a”是字符串常量?!癮”相當(dāng)于‘a(chǎn)’+‘\0’結(jié)論:不能把一個(gè)字符串常量賦給一個(gè)字符變量。charc;c=“a”;錯(cuò)!青島農(nóng)業(yè)大學(xué)理信學(xué)院?jiǎn)栴}:“a”與‘a(chǎn)’青島農(nóng)業(yè)大學(xué)理信學(xué)院114在c語(yǔ)言中沒有專門的字符串變量。如果想將一個(gè)字符串存放在變量中,以便保存,必須使用字符數(shù)組,即用一個(gè)字符型數(shù)組來(lái)存放一個(gè)字符串,數(shù)組中每一個(gè)元素存放一個(gè)字符。青島農(nóng)業(yè)大學(xué)理信學(xué)院在c語(yǔ)言中沒有專門的字符串變量。如果想將一個(gè)字符串存放在變量1154、變量賦初值C語(yǔ)言允許在定義變量的同時(shí)使變量初始化。比如,inta=3;相當(dāng)于inta;a=3;charc=‘a(chǎn)’;inta,b,c=10;只對(duì)一部分變量賦初值inta=1,b=1,c=1; 不要寫成inta=b=c=1;錯(cuò)!青島農(nóng)業(yè)大學(xué)理信學(xué)院4、變量賦初值C語(yǔ)言允許在定義變量的同時(shí)使變量初始化。青島農(nóng)116三、運(yùn)算符與表達(dá)式(1)算術(shù)運(yùn)算符+-*/%(2)關(guān)系運(yùn)算符><==>=<=!=(3)邏輯運(yùn)算符?。Γ|(4)位運(yùn)算符<<>>~|∧&(5)賦值運(yùn)算符=及其擴(kuò)展賦值運(yùn)算符(6)條件運(yùn)算符?:(7)逗號(hào)運(yùn)算符,(8)指針運(yùn)算符*和&(9)求字節(jié)數(shù)運(yùn)算符sizeof(10)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(類型))(11)分量運(yùn)算符.->(12)下標(biāo)運(yùn)算符[](13)其他如函數(shù)調(diào)用運(yùn)算符()表達(dá)式:使用運(yùn)算符和括號(hào)將變量、常量等操作數(shù)連接起來(lái)的,符合C語(yǔ)法規(guī)則的式子,稱為表達(dá)式。青島農(nóng)業(yè)大學(xué)理信學(xué)院三、運(yùn)算符與表達(dá)式(1)算術(shù)運(yùn)算符+-*/%(8)1171、算術(shù)運(yùn)算符與算術(shù)表達(dá)式+加法運(yùn)算符,或正值運(yùn)算符,如:3+5、+3-減法運(yùn)算符,或負(fù)值運(yùn)算符,如:5-2、-3*乘法運(yùn)算符,如:3*5/除法運(yùn)算符,如:5/3%模運(yùn)算符,或稱求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如:7%4的值為3優(yōu)先級(jí):運(yùn)算按照優(yōu)先級(jí)由高到低進(jìn)行結(jié)合方向(結(jié)合性):從左至右,也稱為左結(jié)合性青島農(nóng)業(yè)大學(xué)理信學(xué)院1、算術(shù)運(yùn)算符與算術(shù)表達(dá)式+加法運(yùn)算符,或正值運(yùn)算符,如:118算術(shù)運(yùn)算符優(yōu)先級(jí)和結(jié)合性(附錄C)表達(dá)式求值的普遍順序(從左向右掃描):圓括號(hào)()先內(nèi)圓括號(hào),后外圓括號(hào);函數(shù)引用運(yùn)算符優(yōu)先級(jí)不同,先做優(yōu)先級(jí)高的操作,然后做優(yōu)先級(jí)低的操作;運(yùn)算符優(yōu)先級(jí)相同,按結(jié)合性處理;青島農(nóng)業(yè)大學(xué)理信學(xué)院算術(shù)運(yùn)算符優(yōu)先級(jí)和結(jié)合性(附錄C)表達(dá)式求值的普遍順序(從左119類型轉(zhuǎn)換自動(dòng)類型轉(zhuǎn)換如果運(yùn)算符兩側(cè)的數(shù)據(jù)類型不同,先進(jìn)行自動(dòng)類型轉(zhuǎn)換,再進(jìn)行運(yùn)算。強(qiáng)制類型轉(zhuǎn)換形式:(類型名)(表達(dá)式)short、chardoublefloatlongunsignedint高低青島農(nóng)業(yè)大學(xué)理信學(xué)院類型轉(zhuǎn)換自動(dòng)類型轉(zhuǎn)換short、chardoublefloa120例floatx;inti,j;x=3.6i=(int)x;j=(int)x%2;i的值是多少?j的值是多少?x的值是多少?青島農(nóng)業(yè)大學(xué)理信學(xué)院例floatx;i的值是多少?青島農(nóng)業(yè)大學(xué)理信學(xué)院121自增、自減運(yùn)算符自增++自減--作用:使變量的值增1或者減1這兩個(gè)運(yùn)算符只用于變量,而不用于常量和表達(dá)式。例如,5++,(a+b)++

不合法!結(jié)合方向是“自右至左”,例如-i++青島農(nóng)業(yè)大學(xué)理信學(xué)院自增、自減運(yùn)算符自增++青島農(nóng)業(yè)大學(xué)理信學(xué)院122注意i++和++i的不同i++先使用i的值,再將i加1++i先將i加1,再使用i的值例子:i=3;j=i++;j=++i;青島農(nóng)業(yè)大學(xué)理信學(xué)院注意i++和++i的不同i++青島農(nóng)業(yè)大學(xué)理信學(xué)院123有關(guān)表達(dá)式使用中的問(wèn)題說(shuō)明歧義問(wèn)題書寫程序,注意避免歧義青島農(nóng)業(yè)大學(xué)理信學(xué)院有關(guān)表達(dá)式使用中的問(wèn)題說(shuō)明歧義問(wèn)題青島農(nóng)業(yè)大學(xué)理信學(xué)院1242、賦值運(yùn)算符和賦值表達(dá)式1)賦值運(yùn)算符=作用:將右邊的數(shù)據(jù)賦給左邊的變量i=3i=x+y青島農(nóng)業(yè)大學(xué)理信學(xué)院2、賦值運(yùn)算符和賦值表達(dá)式1)賦值運(yùn)算符=青島農(nóng)業(yè)大學(xué)理信1252)類型轉(zhuǎn)換如果賦值運(yùn)算符兩側(cè)類型不一致,但都是數(shù)值型或字符型時(shí),賦值時(shí)會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換。將實(shí)型數(shù)據(jù)(包括單、雙精度)賦給整型變量時(shí),舍棄實(shí)數(shù)的小數(shù)部分。將整型數(shù)據(jù)賦給單、雙精度變量時(shí),數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲(chǔ)到變量中。將一個(gè)double型數(shù)據(jù)賦給float變量時(shí),截取其前面7位有效數(shù)字,存放到float變量的存儲(chǔ)單元(32位)中。但應(yīng)注意數(shù)值范圍不能溢出。將一個(gè)float型數(shù)據(jù)賦給double變量時(shí),數(shù)值不變,有效位數(shù)擴(kuò)展到16位,在內(nèi)存中以64位(bit)存儲(chǔ)。青島農(nóng)業(yè)大學(xué)理信學(xué)院2)類型轉(zhuǎn)換如果賦值運(yùn)算符兩側(cè)類型不一致,但都是數(shù)值型或字符126(4)字符型數(shù)據(jù)賦給整型變量時(shí),由于字符只占1個(gè)字節(jié),需考慮是否有符號(hào),有符號(hào)位需“符號(hào)擴(kuò)展”。unsignedsigned青島農(nóng)業(yè)大學(xué)理信學(xué)院(4)字符型數(shù)據(jù)賦給整型變量時(shí),由于字符只占1個(gè)字節(jié),需考127(5)將一個(gè)int、short、long型數(shù)據(jù)賦給一個(gè)char型變量時(shí),只將其低8位原封不動(dòng)地送到char型變量(即截?cái)?。青島農(nóng)業(yè)大學(xué)理信學(xué)院(5)將一個(gè)int、short、long型數(shù)據(jù)賦給一個(gè)ch128(6)將帶符號(hào)的整型數(shù)據(jù)(int型)賦給long型變量時(shí),要進(jìn)行符號(hào)擴(kuò)展。反之,若將一個(gè)long型數(shù)據(jù)賦給一個(gè)int型變量,只將long型數(shù)據(jù)中低16位原封不動(dòng)地送到整型變量(即截?cái)?。青島農(nóng)業(yè)大學(xué)理信學(xué)院(6)將帶符號(hào)的整型數(shù)據(jù)(int型)賦給long型變量時(shí),129(7)將unsignedint型數(shù)據(jù)賦給longint型變量時(shí),不存在符號(hào)擴(kuò)展問(wèn)題,只需將高位補(bǔ)0即可。將一個(gè)unsigned類型數(shù)據(jù)賦給一個(gè)占字節(jié)數(shù)相同的整型變量(例如:unsignedint=>int,unsignedlong=>long,unsignedshort=>short),將unsigned型變量的內(nèi)容原樣送到非unsigned型變量中,但如果數(shù)據(jù)范圍超過(guò)相應(yīng)整型的范圍,則會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)誤。將非unsigned型數(shù)據(jù)賦給長(zhǎng)度相同的unsigned型變量,也是原樣照賦(連原有的符號(hào)位也作為數(shù)值一起傳送)。青島農(nóng)業(yè)大學(xué)理信學(xué)院(7)將unsignedint型數(shù)據(jù)賦給longint130青島農(nóng)業(yè)大學(xué)理信學(xué)院青島農(nóng)業(yè)大學(xué)理信學(xué)院1313)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論