數(shù)據(jù)的存儲與運算課件_第1頁
數(shù)據(jù)的存儲與運算課件_第2頁
數(shù)據(jù)的存儲與運算課件_第3頁
數(shù)據(jù)的存儲與運算課件_第4頁
數(shù)據(jù)的存儲與運算課件_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章第二章本章要點數(shù)據(jù)的描述規(guī)則數(shù)據(jù)的操作規(guī)則本章要點數(shù)據(jù)的描述規(guī)則主要內(nèi)容2.1數(shù)據(jù)在計算機中是怎樣存儲的2.2整型數(shù)據(jù)的運算與分析2.3實型數(shù)據(jù)的運算與分析2.4字符型數(shù)據(jù)的運算2.5符號常量2.6算術(shù)運算符和算術(shù)表達式2.7C運算符和C表達式2.8提高部分主要內(nèi)容2.1數(shù)據(jù)在計算機中是怎樣存儲的

2.1數(shù)據(jù)在計算機中是怎樣存儲的2.1.1數(shù)據(jù)在計算機中是以二進制形式存儲的計算機內(nèi)部的信息都是用二進制來表示的。二進制數(shù)的特點是“逢二進一”。每一位的值只有0和1兩種可能。例如:十進制數(shù)10,用二進制表示是1010。它的含義是:

每一個二進位代表不同的冪,最右邊一位代表2的0次方,最右邊第二位代表2的1次方,以此類推。顯然一個很大的整數(shù)可能需要幾十個“二進制位”來代表2.1數(shù)據(jù)在計算機中是怎樣存儲的2.1.1數(shù)據(jù)在

2.1數(shù)據(jù)在計算機中是怎樣存儲的2.1.2位、字節(jié)和地址位:又稱“比特”(bit)。每一個二極管元件稱為一個“二進制位”,是存儲信息的最小單位。它的值是“1”或“0”。字節(jié):又稱“拜特”(byte)。一般將8個“二進制位”組織成一組,稱為“字節(jié)”。地址:計算機的存儲器包含許多存儲單元,操作系統(tǒng)把所有存儲單元以字節(jié)為單位編號。

2.1數(shù)據(jù)在計算機中是怎樣存儲的2.1.2位、字

2.1數(shù)據(jù)在計算機中是怎樣存儲的2.1.3不同類型數(shù)據(jù)的存儲方式整數(shù)的存儲方式十進制整數(shù)先轉(zhuǎn)換為二進制形式。例如:整數(shù)10以二進制形式表示是1010,直接把它存放在存儲單元中。

實數(shù)的存儲形式實數(shù)采用指數(shù)形式存儲,例如:123.456可以寫成標準化指數(shù)形式0.123456,它包括前后兩個部分,前面部分是數(shù)值部分,后面部分是指數(shù)部分。0.123456

數(shù)值部分指數(shù)部分

說明:標準化指數(shù)形式:其數(shù)值部分是一個小數(shù),小數(shù)點前的數(shù)字是零,小數(shù)點后的第一位數(shù)字不是零。一個實數(shù)可以有多種指數(shù)表示形式,但只有一種屬于標準化指數(shù)形式2.1數(shù)據(jù)在計算機中是怎樣存儲的2.1.3不同類

2.1數(shù)據(jù)在計算機中是怎樣存儲的3.字符的存儲方式字符包括字母(如A,a,X,x)、專用字符(如$,@,%,#)等。計算機并不是將該字符本身存放到存儲單元中(存儲單元只能存儲二進制信息),而是將字符的代碼存儲到相應(yīng)的存儲單元中。附錄A是字符與代碼的對照表,這是國際通過的ASCII代碼.2.1數(shù)據(jù)在計算機中是怎樣存儲的3.字符的存儲2.2整型數(shù)據(jù)的運算與分析

雞兔同籠:

在一個籠子里同時養(yǎng)著一些雞和兔子,你想了解有多少只雞和多少只兔,主人對你說:我只告訴你雞和兔的總頭數(shù)是16,總腳數(shù)是40,你能不能自己計算有多少只雞和多少只兔?設(shè):x--雞數(shù)量y--兔數(shù)量,h--總頭數(shù)f--總腳數(shù)有方程式:例題2.1解題思路x+y=h(1)2x+4y=f(2)求x和y的公式:

(2)式-2*(1)式:2y=f–2h

y=2.2.1整型數(shù)據(jù)運算程序舉例和分析2.2整型數(shù)據(jù)的運算與分析雞兔同籠:在一個

2.2整型數(shù)據(jù)的運算與分析#include<stdio.h>voidmain(){inth,f,x,y;/*定義整型變量h,f,x,y*/h=16;/*對整型變量h賦值,使h的值等于16*/f=40;/*對整型變量f賦值,使h的值等于40*/

y=(f-2*h)/2;/*對表達式(f-2*h)/2進行運算,把結(jié)果賦給y*/x=h-y;/*對表達式h-y進行運算,把結(jié)果賦給x*/printf("%d%d\n",x,y);/*輸出雞的個數(shù)和兔的個數(shù)*/}編寫程序說明:1、運行時顯示:124??2、程序改進:printf("%d,%d\n",x,y);3、再改進:printf("cock=%d,rabbit=%d\n",x,y);2.2整型數(shù)據(jù)的運算與分析#include<std

2.2整型數(shù)據(jù)的運算與分析

(1)常量在程序運行過程中,其值不能被改變的量稱為常量常量區(qū)分為不同的類型:整型常量100,125,-100,0,2實型常量3.14,0.125,-3.789字符型常量‘a(chǎn)’,‘b’,‘2’字符串常量“a”,“ab”,“1232”2.2.2整型常量和整型變量2.2整型數(shù)據(jù)的運算與分析(1)常量整型常量

2.2整型數(shù)據(jù)的運算與分析(2)變量變量代表內(nèi)存中具有特定屬性的一個存儲單元,它用來存放數(shù)據(jù),這就是變量的值,在程序運行期間,這些值是可以改變的。變量名實際上是一個以一個名字對應(yīng)代表一個地址,在對程序編譯連接時由編譯系統(tǒng)給每一個變量名分配對應(yīng)的內(nèi)存地址。從變量中取值,實際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲單元中讀取數(shù)據(jù)。2.2整型數(shù)據(jù)的運算與分析(2)變量(3)變量名取名規(guī)則

①C語言規(guī)定變量名只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。下面列出的是合法的標識符,也是合法的變量名:sum,average,_total,class,day,month,student_name,tan,lotus_1_2_3,basic,li_ling下面是不合法的標識符和變量名:M.d.John,y123,#33,3d64,a>b

2.2整型數(shù)據(jù)的運算與分析

(3)變量名取名規(guī)則2.2整型數(shù)據(jù)的運算與分析

②大寫字母和小寫字母被認為是兩個不同的字符。因此,sum和suM,class和Class是兩個不同的變量名。一般,變量名用小寫字母表示,與人們?nèi)粘A晳T一致,以增加可讀性。③變量名的長度不是無限的。ANSI

C標準沒有規(guī)定標識符的長度(字符個數(shù)),但各個c編譯系統(tǒng)都有自己的規(guī)定。

2.2整型數(shù)據(jù)的運算與分析

②大寫字母和小寫字母被認為是兩個不同的字符。因此,su

④在選擇變量名和其他標識符時,應(yīng)注意做到“見名知意”,即選有含意的英文單詞(或其縮寫)作標識符,如count、name、day、month、total、country等,除了數(shù)值計算程序外,一般不要用代數(shù)符號(如a、b、c、x1、y1等)作變量名。⑤在同一程序的同一函數(shù)中,不同的變量不能取相同的變量名。

2.2整型數(shù)據(jù)的運算與分析

④在選擇變量名和其他標識符時,應(yīng)注意做到“見名知意”,即選在C語言中,把用來標示對象(包括變量、函數(shù)、數(shù)組、類型等)名字的有效字符系列稱為標示符。標示符的分類:(1)關(guān)鍵字ifwhile(2)預定義標示符printfscanf(3)用戶定義標示符amax

2.2整型數(shù)據(jù)的運算與分析

在C語言中,把用來標示對象(包括變量、函數(shù)、數(shù)組、類型等)名(4)變量必須“先定義,后使用”

①每一個變量被指定為一確定類型,在編譯時就能為其分配相應(yīng)的存儲單元。如指定a、b為int型,turboc編譯系統(tǒng)為a和b各分配2個字節(jié),VisualC++則分配4個字節(jié),并按整數(shù)方式存儲數(shù)據(jù)。

2.2整型數(shù)據(jù)的運算與分析

(4)變量必須“先定義,后使用”2.2整型數(shù)據(jù)的運②凡未被事先定義的,不作為變量名,這就能保證程序中變量名使用得正確。例如,如果在定義部分寫了intstudent;

而在執(zhí)行語句中錯寫成stadent。如:stadent=30;在編譯時檢查出statent未經(jīng)定義,不作為變量名。因此輸出“變量stadent未經(jīng)聲明”的信息,便于用戶發(fā)現(xiàn)錯誤,避免變量名使用時出錯。

2.2整型數(shù)據(jù)的運算與分析

②凡未被事先定義的,不作為變量名,這就能保證程序中變量名使用③指定每一變量屬于一個類型,這就便于在編譯時,據(jù)此檢查該變量所進行的運算是否合法。例如,整型變量a和b,可以進行求余運算:a%b%是“求余”,得到a/b的余數(shù)。如果將a、b指定為實型變量,則不允許進行“求余”運算,在編譯時會給出有關(guān)“出錯信息”。

2.2整型數(shù)據(jù)的運算與分析

③指定每一變量屬于一個類型,這就便于在編譯時,據(jù)此檢查該變量

2.2整型數(shù)據(jù)的運算與分析2.整型常量的表示形式

整型常量即整常數(shù)。在C語言中,整常數(shù)可用以下三種形式表示:十進制整數(shù):123,-456。八進制整數(shù):以0開頭的數(shù)是八進制數(shù)(不是o)

如:0123表示八進制數(shù)123,等于十進制數(shù)83,-011表示八進制數(shù)-11,即十進制數(shù)-9。十六進制整數(shù):以0x開頭的數(shù)是16進制數(shù)。

如:0x123,代表16進制數(shù)123,等于十進制數(shù)

291。-0x12等于十進制數(shù)10。

2.2整型數(shù)據(jù)的運算與分析2.整型常量的表示形式

2.2整型數(shù)據(jù)的運算與分析3.整型變量的種類整型變量的基本類型符為int??梢愿鶕?jù)數(shù)值的范圍將變量定義為基本整型、短整型或長整型。在int之前可以根據(jù)需要分別加上修飾符(modifier):short(短型)或long(長型)。因此有以下三種整型變量:(1)基本整型,以int表示。(2)短整型,以shortint表示,或以short表示。(3)長整型,以longint表示,或以long表示。2.2整型數(shù)據(jù)的運算與分析3.整型變量的種類

2.2整型數(shù)據(jù)的運算與分析在實際應(yīng)用中,變量的值常常是正的(如學號、庫存量、年齡、存款額等)。為了充分利用變量的表數(shù)范圍,此時可以將變量定義為“無符號”類型。對以上三種都可以加上修飾符unsigned,以指定是“無符號數(shù)”。如果加上修飾符signed,則指定是“有符號數(shù)”。如果既不指定為signed,也不指定為unsigned,則隱含為有符號(signed)。實際上signed是完全可以不寫的。2.2整型數(shù)據(jù)的運算與分析在實際應(yīng)用中,變量的值常常

2.2整型數(shù)據(jù)的運算與分析歸納起來,可以用以下6種整型變量(書P44)。即:有符號基本整型[signed]int無符號基本整型unsignedint有符號短整型[signed]short[int]無符號短整型unsignedshort[int]有符號長整型[signed]long[int]無符號長整型unsignedlong[int]2.2整型數(shù)據(jù)的運算與分析歸納起來,可以用以下6種整

2.2整型數(shù)據(jù)的運算與分析注意:十進制數(shù)10的二進制形式為1010,TurboC2.0和TurboC++3.0為一個整型變量在內(nèi)存中分配2個字節(jié)的存儲單元(不同的編譯系統(tǒng)為整型數(shù)據(jù)分配的字節(jié)數(shù)是不相同的,VC++6.0則分配4個字節(jié))。數(shù)值是以補碼(complement)表示的。

2.2整型數(shù)據(jù)的運算與分析注意:隨堂作業(yè):已知intx=10,y=12;編程將x和y的值互相交換。隨堂作業(yè):

2.3實型數(shù)據(jù)的運算與分析2.3.1實型數(shù)據(jù)的運算舉例例題2.2分期付款的計算。張先生為購房,向銀行貸款,貸款額為324500元,每月準備還3245元,月利率為0.8%,求需要多少個月才能還清。解題思路m=(log10(p)-log10(p-d*r))/log10(1+r);d—貸款額,p—每月還款數(shù),r—月利率,m—還清貸款所需月數(shù)。d=324500元,p=3245元,r=0.8%。2.3實型數(shù)據(jù)的運算與分析2.3.1實型數(shù)據(jù)的運算舉

2.3實型數(shù)據(jù)的運算與分析#include<stdio.h>/*用輸入輸出函數(shù)時必須用“stdio.h”頭文件*/#include<math.h>/*用數(shù)學函數(shù)時必須用“math.h”頭文件*/voidmain(){intd,p;/*定義d和p為整型變量*/floatr,m;/*定義r和m為實型變量*/d=324500;/*給整型變量d賦值*/p=3245;/*給整型變量p賦值*/r=0.008;/*給實型變量r賦值*/m=(log10(p)-log10(p-d*r))/log10(1+r);/*通過公式求m的值*/printf("month=%f\n",m);/*輸出m的值*/printf("total=%f\n",m*p);/*計算并輸出總的還款數(shù)*/}編寫程序說明:

(1)

#include

是“包含頭文件”的命令,調(diào)用系統(tǒng)提供的庫函數(shù),見附錄E。(2)C編譯系統(tǒng)把所有實(float)型常量(如0.008)和log10函數(shù)的值都作為雙精度數(shù)據(jù)來處理,在把它們賦給float型變量時可能會喪失一些精度,在編譯時出現(xiàn)“警告”,不屬于致命性錯誤,可以將r和m改定義為double型(3)可以在定義變量時同時賦初值intd=32450,p=3250,doubler=0.008

(4)運行結(jié)果:month=201.983404,total=655436.1279302.3實型數(shù)據(jù)的運算與分析#include<std

2.3實型數(shù)據(jù)的運算與分析2.3.2實型常量的表示形式兩種表示形式小數(shù)指數(shù)0.1233e-3注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)1e3、1.8e-3、-123e-6、-.1e-3e3、2.1e3.5、.e3、e

2.3實型數(shù)據(jù)的運算與分析2.3.2實型常量的表示2.3實型數(shù)據(jù)的運算與分析規(guī)范化的指數(shù)形式:

在字母e(或E)之前的小數(shù)部分中,小數(shù)點左邊應(yīng)有一位(且只能有一位)非零的數(shù)字.例如:123.456可以表示為:123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e其中的1.23456e2稱為“規(guī)范化的指數(shù)形式”。2.3實型數(shù)據(jù)的運算與分析規(guī)范化的指數(shù)形式:類型位數(shù)數(shù)的范圍有效數(shù)字float3210-37~10386~7位double型6410-307~1030815~16位longdouble12810-4931~10493218~19位2.3實型數(shù)據(jù)的運算與分析2.3.3實型變量(1)實型變量的分類浮點型變量分為單精度(float型)、雙精度(double型)和長雙精度型(longdouble)三類形式。類型位數(shù)數(shù)的范圍2.3實型數(shù)據(jù)的運算與分析(2)實型數(shù)據(jù)在內(nèi)存中的存放形式

一個浮點型數(shù)據(jù)一般在內(nèi)存中占4個字節(jié)(32位)。與整型數(shù)據(jù)的存儲方式不同,浮點型數(shù)據(jù)是按照指數(shù)形式存儲的。系統(tǒng)把一個浮點型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分采用標準化的指數(shù)形式。2.3實型數(shù)據(jù)的運算與分析(2)實型數(shù)據(jù)在內(nèi)存中的存例2.3實型數(shù)據(jù)的舍入誤差

#include<stdio.h>

voidmain()

{floatp;

p=3.141592612;

printf(“%f\n”,p);

}

說明:一個實型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是無意義的,并不準確地表示該數(shù)。應(yīng)當避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減,否則就會“丟失”小的數(shù)運行結(jié)果:

3.141593例2.3實型數(shù)據(jù)的舍入誤差

#include<stdio.

2.3實型數(shù)據(jù)的運算與分析(3)把實數(shù)按雙精度數(shù)處理

C編譯系統(tǒng)將浮點型常量作為雙精度來處理。

例如:f=2.45678*4523.65

系統(tǒng)先把2.45678和4523.65作為雙精度數(shù)進行相乘運算,得到的乘也是一個雙精度數(shù)。最后取其前7位賦給浮點型變量f。如果在數(shù)的后面加字母f或F(如1.65f,654.87F),這樣編譯系統(tǒng)就會把它們按單精度(32位)處理。2.3實型數(shù)據(jù)的運算與分析(3)把實數(shù)按雙精度數(shù)處

2.4字符型數(shù)據(jù)的運算逐個輸出英文字母C,H,I,N,A。然后按反序輸出,即A,N,I,H,C??梢园?個字母分別放在5個變量中,第1次按正序輸出這5個字母,第2次按反序輸出這5個字母。C語言提供字符型變量,用來存放字符數(shù)據(jù)。例題2.4解題思路2.4.1字符數(shù)據(jù)運算的簡單例子2.4字符型數(shù)據(jù)的運算逐個輸出英文字母C,H,I,2.4字符型數(shù)據(jù)的運算#include<stdio.h>voidmain(){chara='C',b='H',c='I',d='N',e='A';/*a,b,c,d,e定義為字符變量*/printf("%c%c%c%c%c\n",a,b,c,d,e);/*順序輸出CHINA*/printf("%c%c%c%c%c\n",e,d,c,b,a);/*反序輸出CHINA*/}編寫程序說明:1、第3行是定義字符變量a,b,c,d,e。字符要用單撇號括起來。一個字符變量放一個字母字符。2、第4,5行輸出5個字母。輸出字符所用的格式說明為“%c”。3、運行結(jié)果:CHINAANIHC2.4字符型數(shù)據(jù)的運算#include<stdio

2.4字符型數(shù)據(jù)的運算

2.4.2字符常量和字符變量字符常量(1)用單引號包含的一個字符是字符型常量(2)只能包含一個字符例‘a(chǎn)’,’A’,‘1’‘a(chǎn)bc’、“a”2.4字符型數(shù)據(jù)的運算2.4.2字符常量和字符變

2.4字符型數(shù)據(jù)的運算2.轉(zhuǎn)義字符有些以“\”開頭的特殊字符稱為轉(zhuǎn)義字符\n換行\(zhòng)t橫向跳格\r回車\\反斜杠\dddddd表示1到3位八進制數(shù)字\xhhhh表示1到2位十六進制數(shù)字2.4字符型數(shù)據(jù)的運算2.轉(zhuǎn)義字符\n換行

2.4字符型數(shù)據(jù)的運算3.字符變量字符型變量用來存放字符常量,注意只能放一個字符。字符變量的定義形式如下:charc1,c2;在本函數(shù)中可以用下面語句對c1,c2賦值:c1=‘a(chǎn)’;c2=‘b’;一個字符變量在內(nèi)存中占一個字節(jié)。

2.4字符型數(shù)據(jù)的運算3.字符變量

2.4字符型數(shù)據(jù)的運算4.字符數(shù)據(jù)與整型數(shù)據(jù)在一定條件下可以通用

一個字符常量存放到一個字符變量中,實際上并不是把該字符的字型放到內(nèi)存中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲單元中。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。注意:

一個字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。2.4字符型數(shù)據(jù)的運算4.字符數(shù)據(jù)與整型數(shù)據(jù)在一定條例2.5向字符變量賦以整數(shù)。

#include<stdio.h>

voidmain()

{charc1,c2;

c1=97;

c2=98;

printf(“%c%c\n”,c1,c2);

printf(“%d%d\n”,c1,c2);

說明:在第3和第4行中,將整數(shù)97和98分別賦給c1和c2,它的作用相當于以下兩個賦值語句: c1=′a′;c2=′b′;因為’a’和’b’的ASCII碼為97和98運行結(jié)果:ab9798例2.5向字符變量賦以整數(shù)。

#include<stdi例2.6大小寫字母的轉(zhuǎn)換

#include<stdio.h>

voidmain()

{charc1,c2;

c1=’a’;

c2=’b’;

c1=c1-32;

c2=c2-32;

printf(“%c%c″,c1,c2);

}說明:程序的作用是將兩個小寫字母a和b轉(zhuǎn)換成大寫字母A和B。從ASCII代碼表中可以看到每一個小寫字母比它相應(yīng)的大寫字母的ASCII碼大32。C語言允許字符數(shù)據(jù)與整數(shù)直接進行算術(shù)運算。運行結(jié)果:AB

例2.6大小寫字母的轉(zhuǎn)換

#include<stdio

2.4字符型數(shù)據(jù)的運算2.4.3字符串常量字符串常量是一對雙撇號括起來的字符序列.合法的字符串常量:“Howdoyoudo.”,“CHINA”,“a”,“$123.45”可以輸出一個字符串,如printf(“Howdoyoudo.”);2.4字符型數(shù)據(jù)的運算2.4.3字符串常量

2.4字符型數(shù)據(jù)的運算‘a’是字符常量,“a”是字符串常量,二者不同。

如:假設(shè)C被指定為字符變量

:charcc=‘a(chǎn)’;c=“a”;c=“CHINA”;

結(jié)論:不能把一個字符串常量賦給一個字符變量。2.4字符型數(shù)據(jù)的運算‘a’是字符常量,“a”是字C規(guī)定:在每一個字符串常量的結(jié)尾加一個“字符串結(jié)束標志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。C規(guī)定以字符’\0’作為字符串結(jié)束標志。

如:如果有一個字符串常量”CHINA”,實際上在內(nèi)存中是:CHINA\0

它占內(nèi)存單元不是5個字符,而是6個字符,最后一個字符為’\0’。但在輸出時不輸出’\0’。

2.4字符型數(shù)據(jù)的運算C規(guī)定:在每一個字符串常量的結(jié)尾加一個“字符如:如果有一2.5符號常量

2.5.1為什么要用符號常量

例題2.7已知圓的半徑為r,求圓周長c,圓面積s,圓球體積v。解題思路圓周長圓面積園體積

有了以上公式就可以進行計算了s=

c=2V=2.5符號常量2.5.1為什么要用符號常量2.5符號常量#include<stdio.h>voidmain(){doubler=3.67,c,s,v;c=2*3.1415926*r;s=3.1415926*r*r;v=4/3*3.1415926*r*r*r;printf("c=%f\ns=%f\nv=%f\n",c,s,v);}編寫程序說明:運行結(jié)果:c=23.059290s=42.313797v=155.2916332.5符號常量#include<stdio.h>編2.5符號常量說明:(1)C語言規(guī)定,兩個整型數(shù)據(jù)相除結(jié)果是整型。因此,4/3的值是整數(shù)1,而沒有小數(shù)部分。可以改用實數(shù),寫成4.0/3.0。程序第6行改為v=4.0/3.0*3.1415926*r*r*r;再編譯和運行,得到正確的v值。(2)可調(diào)用pow函數(shù),求r2和r3,其函數(shù)形式是pow(r,2)、pow(r,3),函數(shù)值是double型。(3)程序中多次出現(xiàn)常數(shù)3.1415926,降低程序的可讀性??捎靡粋€符號來代表一個常量,如可以用一個符號名PI來代表圓周率3.1415926。這樣就不必在每處都重復寫3.1415926,而用PI來代表,這個PI就叫符號常量。#definePI3.1415926

2.5符號常量說明:2.5符號常量2.5.2符號常量的性質(zhì)和使用方法#define不是C語句,該行的末尾沒有分號。它是一個“預編譯命令”,即在編譯之前,對程序中出現(xiàn)的所有PI都用3.1415926取代。不要把符號常量與變量混淆,符號常量只是一個符號,不占存儲單元。它只是簡單地進行字符置換(如把字符PI置換為字符3.1415926)。不論置換的字符是否有含義都進行置換。習慣上,符號常量名用大寫,變量名用小寫,以示區(qū)別。

使用符號常量的好處含義清楚在需要改變一個常量時能做到“一改全改”。

2.5符號常量2.5.2符號常量的性質(zhì)和使用方法#d2.6算術(shù)運算符和算術(shù)表達式2.6.1算術(shù)運算符(1)基本的算術(shù)運算符:+(加法運算符,或正值運算符。如:3+5、+3)-(減法運算符,或負值運算符。如:5-2、-3)*(乘法運算符。如:3*5)/(除法運算符。如:1/2=0,1.0/2.0=0.5,1.0/2=0.5)%(模運算符,或稱求余運算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如:7%4的值為3,-7%4=-3,7%-3=3)。2.6算術(shù)運算符和算術(shù)表達式2.6.1算術(shù)運算符

2.6算術(shù)運算符和算術(shù)表達式(2)運算符的優(yōu)先級與結(jié)合性C語言規(guī)定了運算符的優(yōu)先級在表達式求值時,先按運算符的優(yōu)先級別高低次序執(zhí)行,例如先乘除后加減。

C規(guī)定了各種運算符的結(jié)合方向(結(jié)合性)算術(shù)運算符的結(jié)合方向為“自左至右”,即先左后右。2.6算術(shù)運算符和算術(shù)表達式(2)運算符的優(yōu)先級與2.6算術(shù)運算符和算術(shù)表達式2.6.1算術(shù)運算符(1)基本的算術(shù)運算符:

說明:

(1)兩個整數(shù)相除的結(jié)果為整數(shù),如5/3的結(jié)果值為1,舍去小數(shù)部分。但是,如果除數(shù)或被除數(shù)中有一個為負值,則舍入的方向是不固定的。例如,-5/3在有的機器上得到結(jié)果-1,有的機器則給出結(jié)果-2。多數(shù)機器采取“向零取整”的方法,即5/3=1,-5/3=-1,取整后向零靠攏。(2)如果參加+,-,*,/運算的兩個數(shù)中有一個數(shù)為float型或double型,則結(jié)果是double型,因為所有實數(shù)都按double型進行運算。2.6算術(shù)運算符和算術(shù)表達式2.6.12.6算術(shù)運算符和算術(shù)表達式(3)

自增、自減運算符

作用是使變量的值增1或減1如:++i,--i(在使用i之前,先使i的值加(減)1)i++,i--(在使用i之后,使i的值加(減)1)

2.6算術(shù)運算符和算術(shù)表達式(3)自增、自減運算符2.6算術(shù)運算符和算術(shù)表達式i++與++i的區(qū)別:

++i是先執(zhí)行i=i+1后,再使用i的值;i++是先使用i的值后,再執(zhí)行i=i+1。例如:如果i的取值為3,①j=++i;i的值先變成4,再賦給j,j的值均為4②j=i++;先將i的值3賦給j,j的值為3,然后i變?yōu)椋?.6算術(shù)運算符和算術(shù)表達式i++與++i的區(qū)別:2.6算術(shù)運算符和算術(shù)表達式又如:①i=3; printf(“%d”,++i); 輸出為4。若改為②printf(“%d”,i++);輸出為32.6算術(shù)運算符和算術(shù)表達式又如:2.6算術(shù)運算符和算術(shù)表達式注意:

(1)自增運算符(++),自減運算符(--),只能用于變量,而不能用于常量或表達式,如5++或(a+b)++都是不合法的。因為5是常量,常量的值不能改變。(a+b)++也不可能實現(xiàn),假如a+b的值為5,那么自增后得到的6放在什么地方呢?無變量可供存放。

2.6算術(shù)運算符和算術(shù)表達式注意:2.6算術(shù)運算符和算術(shù)表達式

(2)++和--的結(jié)合方向是“自右至左”。前面已提到,算術(shù)運算符的結(jié)合方向為“自左而右”,這是大家所熟知的。如果有-i++,i的左面是負號運算符,右面是自加運算符。如果i的原值等于3,若按左結(jié)合性,相當于(-i)++,而(-i)++是不合法的,因為對表達式不能進行自加自減運算。負號運算符和“++”運算符同優(yōu)先級,而結(jié)合方向為“自右至左”(右結(jié)合性),即它相當于-(i++),如果有printf("%d",-i++),則先取出i的值3,輸出-i的值-3,然后i增值為4。注意-(i++)是先用i的原值3加上負號輸出-3,再對i加1,不要認為先加完1后再加負號,輸出-4,這是不對的。2.6算術(shù)運算符和算術(shù)表達式(2)++和

2.6算術(shù)運算符和算術(shù)表達式

C語言中有的運算符為一個字符,有的運算符由兩個字符組成,為避免誤解,最好采取大家都能理解的寫法。例如:不要寫成i+++j的形式,而應(yīng)寫成(i++)+j的形式

2.6算術(shù)運算符和算術(shù)表達式C語言中有的運算符為一2.6算術(shù)運算符和算術(shù)表達式

自增(減)運算符常用于循環(huán)語句中使循環(huán)變量自動加1。也用于指針變量,使指針指向下一個地址。

初學者盡量使用++i和--i這樣的形式,少使用i++和i--這樣的形式。

2.6算術(shù)運算符和算術(shù)表達式自增(減)運算2.6算術(shù)運算符和算術(shù)表達式

2.6.1算術(shù)表達式用算術(shù)運算符和括號將運算對象(也稱操作數(shù))連接起來的、符合C語法規(guī)則的式子,稱為C算術(shù)表達式。運算對象包括常量、變量、函數(shù)等。

例如:a*b/c-1.5+′a′是一個合法的表達式2.6算術(shù)運算符和算術(shù)表達式2.6.1算術(shù)表隱式轉(zhuǎn)換什么情況下發(fā)生運算轉(zhuǎn)換------不同類型數(shù)據(jù)混合運算時賦值轉(zhuǎn)換------把一個值賦給與其類型不同的變量時輸出轉(zhuǎn)換------輸出時轉(zhuǎn)換成指定的輸出格式函數(shù)調(diào)用轉(zhuǎn)換------實參與形參類型不一致時轉(zhuǎn)換運算轉(zhuǎn)換規(guī)則:不同類型數(shù)據(jù)運算時先自動轉(zhuǎn)換成同一類型不同類型數(shù)據(jù)間的轉(zhuǎn)換不同類型數(shù)據(jù)間的轉(zhuǎn)換doublefloatlongunsignedintchar,short低高說明:必定的轉(zhuǎn)換運算對象類型不同時轉(zhuǎn)換charch;inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+‘a(chǎn)’+i*f-d/l例2inti;floatf;doubled;longl;例1doublefloatlongunsignedintchar一般形式:(類型名)(表達式)例:(int)(x+y)(int)x+y(double)(3/2)(int)3.6說明:強制轉(zhuǎn)換得到所需類型的中間變量,原變量類型不變

例main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}結(jié)果:x=3.600000,i=3較高類型向較低類型轉(zhuǎn)換時可能發(fā)生精度損失問題顯式轉(zhuǎn)換(強制轉(zhuǎn)換)例main()較高類型向較低類型轉(zhuǎn)換時可能發(fā)生精度損失問

2.7C運算符和C表達式2.7.1C運算符

C的運算符有以下幾類:(1)算術(shù)運算符(+-*/%)(2)關(guān)系運算符(><==>=<=!=)(3)邏輯運算符(?。Γ|)(4)位運算符(<<>>~|∧&)(5)賦值運算符(=及其擴展賦值運算符)(6)條件運算符(?:)(7)逗號運算符(,)2.7C運算符和C表達式2.7.1C運算符

2.7C運算符和C表達式(8)指針運算符(*和&)(9)求字節(jié)數(shù)運算符(sezeof)(10)強制類型轉(zhuǎn)換運算符(類型)(11)分量運算符(.->)(12)下標運算符([])(13)其他(如函數(shù)調(diào)用運算符())2.7C運算符和C表達式(8)指針運算符(*和&)

2.7C運算符和C表達式2.7.2C表達式C語言有以下幾類表達式:算術(shù)表達式。如2+6.7*3.5+sin(0.5)關(guān)系表達式。如x>0,y<z+6邏輯表達式。x>0&&y>0(表示x>0與y>0同時成立,&&是邏輯運算符,代表“與”)賦值表達式。如a=5.6逗號表達式。如a=3,y=4,z=8用逗號連接若干個表達式,順序執(zhí)行這些表達式,整個逗號表達式的值是最后一個表達式的值(今為8)。詳見本章提高部分。2.7C運算符和C表達式2.7.2C表達式2.8提高部分計算機不論對正數(shù)和負數(shù)都按“補碼”形式存放到存儲單元。對于正數(shù)來說,補碼就是該數(shù)的“原碼”(該數(shù)的二進制形式)。負數(shù)的補碼不是它的原碼。2.8.1求補碼的方法2.8提高部分計算機不論對正數(shù)和負數(shù)都按“補碼”形式2.8提高部分求一個負數(shù)的補碼的方法是:取該數(shù)(不考慮數(shù)的符號)的二進制形式,它就是原碼。對該原碼逐位“取反”(逐位把0變1,把1變0),得到其“反碼”將得到的反碼加1

2.8.1求補碼的方法

求-10的補碼步驟如下:(1)-10的原碼是00001010。(2)其反碼是11110101。(3)再加1,得補碼11110110。

注意:負數(shù)的補碼形式的最高位都是1,從第1位就可以判斷該數(shù)的正負。

2.8提高部分求一個負數(shù)的補碼的方法是:2.8.1

2.8提高部分2.8.2整型常量的表示形式

十進制整數(shù)。

如:123,-456.4。八進制整數(shù)。以0頭的數(shù)是八進制數(shù)。

如:0123表示八進制數(shù)123,等于十進制數(shù)83,-011表示八進制數(shù)-11,即十進制數(shù)-9。十六進制整數(shù)。以0x開頭的數(shù)是16進制數(shù)。

如:0x123,代表16進制數(shù)123

溫馨提示

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

評論

0/150

提交評論