程序設(shè)計(jì)教程課件_第1頁(yè)
程序設(shè)計(jì)教程課件_第2頁(yè)
程序設(shè)計(jì)教程課件_第3頁(yè)
程序設(shè)計(jì)教程課件_第4頁(yè)
程序設(shè)計(jì)教程課件_第5頁(yè)
已閱讀5頁(yè),還剩567頁(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)介

C語(yǔ)言概述1.1C語(yǔ)言的發(fā)展歷程

C語(yǔ)言是國(guó)際上廣泛流行的高級(jí)語(yǔ)言。C語(yǔ)言的發(fā)展過(guò)程可以粗略的分為誕生(1970年—1973年)、發(fā)展(1973年—1988年)和成熟(1988年以后)三個(gè)階段。

(1)C語(yǔ)言是在B語(yǔ)言的基礎(chǔ)上發(fā)展起來(lái)的。B(BCPL)語(yǔ)言是1970年由美國(guó)貝爾實(shí)驗(yàn)室設(shè)計(jì)的,并用于編寫了第一個(gè)UNIX操作系統(tǒng),在PDP7上實(shí)現(xiàn)。優(yōu)點(diǎn):精練,接近硬件缺點(diǎn):過(guò)于簡(jiǎn)單,數(shù)據(jù)無(wú)類型。1.1C語(yǔ)言的發(fā)展歷程(2)1973年貝爾實(shí)驗(yàn)室的D.M.Ritchie在B語(yǔ)言的基礎(chǔ)上設(shè)計(jì)出了C語(yǔ)言,但僅在貝爾實(shí)驗(yàn)室使用。1975年UNIX第6版發(fā)布,C優(yōu)點(diǎn)突出引起關(guān)注。1977年出現(xiàn)了《可移植C語(yǔ)言編譯程序》。

1978年影響深遠(yuǎn)的名著《TheCProgrammingLanguage》由BrianW.Kernighan和DennisM.Ritchie合著,被稱為標(biāo)準(zhǔn)C。在此之后,C語(yǔ)言風(fēng)靡世界,成為最廣泛的幾種計(jì)算機(jī)語(yǔ)言之一。1983年,美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)根據(jù)C語(yǔ)言各種版本對(duì)C的發(fā)展和擴(kuò)充,制定了新的標(biāo)準(zhǔn)ANSIC,比標(biāo)準(zhǔn)C有了很大的發(fā)展。1.1C語(yǔ)言的發(fā)展歷程

(3)1988年K&R按照ANSIC修改了他們的《TheCProgrammingLanguage》。1987年,ANSI公布了新標(biāo)準(zhǔn)——87ANSIC。

1990年,國(guó)際標(biāo)準(zhǔn)化組織接受了87ANSIC為ISOC的標(biāo)準(zhǔn)(ISO9899—1990)。

1994年,ISO又修訂了C語(yǔ)言標(biāo)準(zhǔn)。目前流行的C語(yǔ)言編譯系統(tǒng)大多是以ANSIC為基礎(chǔ)進(jìn)行開發(fā)的。

說(shuō)明:不同版本的C編譯系統(tǒng)所實(shí)現(xiàn)的語(yǔ)言功能和語(yǔ)法規(guī)則又略有差別,因此讀者可以參閱有關(guān)手冊(cè),了解所用的C語(yǔ)言編譯系統(tǒng)的特點(diǎn)。本書的敘述基本上以ANSIC為基礎(chǔ)。1.2數(shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲(chǔ)形式和表示方法1.2.1內(nèi)存的組織形式1.內(nèi)存儲(chǔ)器RAM(RandomAccessMemory)2.內(nèi)存儲(chǔ)器的組織形式圖1.1內(nèi)存儲(chǔ)器的結(jié)構(gòu)示意圖

1.2數(shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲(chǔ)形式和表示方法加法運(yùn)算規(guī)則:0+0=00+1=11+0=11+1=10乘法運(yùn)算規(guī)則:0×0=00×1=01×0=01×1=12.十進(jìn)制數(shù)與二進(jìn)制數(shù)的轉(zhuǎn)換例如:將十進(jìn)制19.45轉(zhuǎn)換為二進(jìn)制數(shù)。19.45的整數(shù)部分為19,其轉(zhuǎn)換的過(guò)程如下:1.2數(shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲(chǔ)形式和表示方法19.45的小數(shù)部分為0.45(取四位小數(shù)),其轉(zhuǎn)換的過(guò)程如下:、0.45×2=0.90取其整數(shù)部分為00.90×2=1.80取其整數(shù)部分為10.80×2=1.60取其整數(shù)部分為10.60×2=1.20取其整數(shù)部分為1……

依次類推。則得到(19.45)10=(10011.0111)2括號(hào)外的下標(biāo)10和2,分別表示十進(jìn)制數(shù)和二進(jìn)制數(shù)。由此可以觀察到:19=1×24+0×23+0×22+1×21+1×20。

1.2數(shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲(chǔ)形式和表示方法1.2.3八進(jìn)制(octal)數(shù)

1.八進(jìn)制數(shù)的基本特征八進(jìn)制數(shù)由0、1、2、3、4、5、6、7等八個(gè)數(shù)字符號(hào)表示;基數(shù)為8;按逢8進(jìn)1、借1算8的規(guī)則計(jì)數(shù);采用位置記數(shù)法(或帶權(quán)記數(shù)法),權(quán)值為8。其基本運(yùn)算規(guī)則與十進(jìn)制相似。2.二進(jìn)制數(shù)與八進(jìn)制數(shù)的轉(zhuǎn)換

3.八進(jìn)制數(shù)與十進(jìn)制數(shù)的轉(zhuǎn)換1.2數(shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲(chǔ)形式和表示方法1.2.4十六進(jìn)制(Hexadecimal)數(shù)1.十六進(jìn)制數(shù)的基本特征十六進(jìn)制數(shù)由0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F等十六個(gè)數(shù)字符號(hào)表示;基數(shù)為16;按逢16進(jìn)1、借1算16的規(guī)則計(jì)數(shù);采用位置記數(shù)法(或帶權(quán)記數(shù)法),權(quán)值為16。十六進(jìn)制數(shù)中的A、B、C、D、E、F分別代表10、11、12、13、14、15。在C語(yǔ)言中,表示十六進(jìn)制數(shù)時(shí),大小寫字母作用相同。2.十六進(jìn)制數(shù)與二進(jìn)制數(shù)間的轉(zhuǎn)換例如:將二進(jìn)制數(shù)1011010101111110轉(zhuǎn)換為十六進(jìn)制數(shù)。二進(jìn)制數(shù)1011010101111110可以寫成1011,0101,0111,1110四組數(shù),再分別用十六進(jìn)制數(shù)碼C、5、7、E表示。即(1011010101111110)2=(C57E)161.2數(shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲(chǔ)形式和表示方法表1.1各種進(jìn)位制度的常用數(shù)值轉(zhuǎn)換表

3.十六進(jìn)制數(shù)與十進(jìn)制數(shù)間的轉(zhuǎn)換若將一個(gè)十六進(jìn)制整數(shù)轉(zhuǎn)換為十進(jìn)制數(shù),只需把十六進(jìn)制數(shù)按權(quán)展開,累加各項(xiàng)即可。

注意:在進(jìn)行轉(zhuǎn)換時(shí),每位十六進(jìn)制數(shù)都應(yīng)表示為4位二進(jìn)制數(shù),如0應(yīng)表示為0000,而不應(yīng)只寫成0,否則就會(huì)丟失某些位。八進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)時(shí),每位八進(jìn)制數(shù)對(duì)應(yīng)一個(gè)3位的二進(jìn)制數(shù)。

1.2數(shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲(chǔ)形式和表示方法1.2.5原碼、反碼和補(bǔ)碼。

在計(jì)算機(jī)內(nèi)部,所有的信息都要用二進(jìn)制數(shù)來(lái)表示,數(shù)的符號(hào)“+”、“-”也必須采用二進(jìn)制數(shù)來(lái)表示。通常以0表示正數(shù)的符號(hào),以1表示負(fù)數(shù)的符號(hào),當(dāng)符號(hào)和數(shù)值都二進(jìn)制數(shù)0和1表示之后,這樣的數(shù)叫機(jī)器數(shù)或機(jī)器碼。

機(jī)器碼可以采用不同的碼制來(lái)表示,常用的有原碼、反碼和補(bǔ)碼三種表示方法。這樣表示的目的是在計(jì)算機(jī)內(nèi)部可以讓符號(hào)位一道參加數(shù)值運(yùn)算。1.數(shù)的原碼表示原碼通常用最高位表示數(shù)的符號(hào)位,數(shù)值部分用二進(jìn)制絕對(duì)值表示。即一個(gè)正數(shù)的原碼是它本身,一個(gè)負(fù)數(shù)的原碼是其符號(hào)位加數(shù)值部分。2.數(shù)的反碼表示

一個(gè)正數(shù)的反碼與其原碼相同,一個(gè)負(fù)數(shù)的反碼是將符號(hào)位除外,其他各位逐位取反,即0變1,1變0,參看表1.2。3.補(bǔ)碼表示方法先以日常鐘表的時(shí)間表示為例,說(shuō)明補(bǔ)碼的概念。假設(shè)現(xiàn)在的標(biāo)準(zhǔn)時(shí)間為6點(diǎn)整,而有一只指針指向10點(diǎn),為了校準(zhǔn)時(shí)間,可以采取兩種方法:一是將時(shí)針退(10-6)=4格;另一種方法是將時(shí)針向前撥(12-4)=8格。

這兩種方法都可以將鐘表校準(zhǔn)的正確時(shí)間。對(duì)于這個(gè)問(wèn)題來(lái)說(shuō),減4和加8是等價(jià)的。由此,可以說(shuō)(+8)和(-4)是以12為模的補(bǔ)碼。1.2數(shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲(chǔ)形式和表示方法說(shuō)明:在計(jì)算機(jī)中,帶符號(hào)的數(shù)用補(bǔ)碼表示,此時(shí)減法運(yùn)算變?yōu)榧臃ㄟ\(yùn)算,從而簡(jiǎn)化了計(jì)算機(jī)硬件電路的結(jié)構(gòu)。當(dāng)運(yùn)算的結(jié)果超出補(bǔ)碼表示范圍時(shí),結(jié)果就不正確了,這稱為“溢出”。1.2數(shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲(chǔ)形式和表示方法在數(shù)學(xué)上由于-4=-1×12+8,+8=0×12+8稱為同余式。對(duì)于同余式中的模,則表示可以棄舍或丟掉的數(shù)值。其結(jié)果是減去4和加上8都可以實(shí)現(xiàn)正確時(shí)間的校準(zhǔn)。補(bǔ)碼的計(jì)算規(guī)則:一個(gè)正數(shù)的補(bǔ)碼和其原碼形式相同,一個(gè)負(fù)數(shù)的補(bǔ)碼是將其反碼加1,參看表1.2中部分舉例。在計(jì)算機(jī)中,負(fù)數(shù)是用其補(bǔ)碼表示的。例如:求-42的補(bǔ)碼。42用二進(jìn)制數(shù)表示是101010,其原碼為10101010,則其反碼為11010101,即其反碼加1即為補(bǔ)碼:11010110。1.3利用計(jì)算機(jī)處理問(wèn)題的基本過(guò)程1.計(jì)算機(jī)算題的簡(jiǎn)單過(guò)程2.利用計(jì)算機(jī)處理問(wèn)題的過(guò)程(1)需求分析。(2)確定處理方案。

(3)確定操作步驟。(4)編寫源程序。(5)輸入和運(yùn)行程序。(6)整理結(jié)果。

圖1.3計(jì)算機(jī)處理一個(gè)實(shí)際問(wèn)題的主要過(guò)程

1.4最簡(jiǎn)單的C程序的構(gòu)成

1.4.1C語(yǔ)言的特點(diǎn)(1)語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活。(2)具有豐富的運(yùn)算符和數(shù)據(jù)結(jié)構(gòu)。(3)C語(yǔ)言是完全模塊化和結(jié)構(gòu)化的語(yǔ)言。(4)C語(yǔ)言因?yàn)榧嬗懈呒?jí)和低級(jí)語(yǔ)言的特點(diǎn)。(5)與匯編語(yǔ)言相比,可移植性好。(6)生成目標(biāo)代碼質(zhì)量高。1.4最簡(jiǎn)單的C程序的構(gòu)成

1.4.2C語(yǔ)言中的字符集

1.字符集字符是組成語(yǔ)言的最基本的元素。C語(yǔ)言字符集由字母、數(shù)字、空格、標(biāo)點(diǎn)和特殊字符組成,具體可以參看附錄1中常用字符與ASCII碼表。具體可以分為如下幾類:(1)字母。小寫英文字母a~z共26個(gè),大寫字母A~Z共26個(gè)。

(2)數(shù)字。0~9共10個(gè)。

(3)空白符。空格符、制表符、換行符等統(tǒng)稱為空白符。

(4)標(biāo)點(diǎn)和特殊字符。1.4最簡(jiǎn)單的C程序的構(gòu)成

2.標(biāo)識(shí)符

C語(yǔ)言中用來(lái)對(duì)變量、符號(hào)常量、函數(shù)、數(shù)組、自定義類型等數(shù)據(jù)對(duì)象命名的有效字符序列統(tǒng)稱為標(biāo)識(shí)符(identifier)。簡(jiǎn)單地說(shuō),標(biāo)識(shí)符就是一個(gè)名字。

C語(yǔ)言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線3種字符組成,且第1個(gè)字符必須為字母或下劃線。

下面列出的是合法的標(biāo)識(shí)符,可以作為變量名。X1,a,A3,student,abc,kk下面是不合法的標(biāo)識(shí)符和變量名M.D.John,¥123,#33,3D64,a>b,3x特別注意:編譯系統(tǒng)將大寫字母和小寫字母認(rèn)為是兩個(gè)不同的字符。

1.4最簡(jiǎn)單的C程序的構(gòu)成

3.關(guān)鍵字C語(yǔ)言的32個(gè)關(guān)鍵字,是C語(yǔ)言編譯系統(tǒng)賦予規(guī)定含義的英文單詞或字母組合,在進(jìn)行C語(yǔ)言的程序設(shè)計(jì)時(shí),不能再賦予其新的含義。C語(yǔ)言的關(guān)鍵字分為以下幾類:(1)類型說(shuō)明符。用于定義變量、函數(shù)或其他數(shù)據(jù)結(jié)構(gòu)的類型。如int、double等。(2)語(yǔ)句定義符。用于表示一個(gè)語(yǔ)句的功能。如if、else、while等。(3)預(yù)處理命令字。用于表示一個(gè)預(yù)處理命令。如include、define等。C語(yǔ)言的32個(gè)關(guān)鍵字,具體功能可以參看附錄Ⅳ。例1.1

輸出一行信息Helloworld!。

#include<stdio.h>void

main(){

printf("Helloworld!

\n");}

1.4最簡(jiǎn)單的C程序的構(gòu)成/*文件包含*//*主函數(shù)*//*函數(shù)體開始*//*輸出語(yǔ)句*//*函數(shù)體結(jié)束*/說(shuō)明

main

主函數(shù)名,每個(gè)C程序必須有一個(gè)主函數(shù)main,系統(tǒng)執(zhí)行C程序時(shí),從main函數(shù)開始。()是函數(shù)的標(biāo)志。1.4.3C程序的構(gòu)成1.簡(jiǎn)單的C程序舉例

1.4最簡(jiǎn)單的C程序的構(gòu)成

說(shuō)明void函數(shù)類型表示此函數(shù)是“空類型”,printf是C編譯系統(tǒng)提供的標(biāo)準(zhǔn)函數(shù)庫(kù)中的輸出函數(shù)名,

雙引號(hào)“”是字符串的定界符,雙引號(hào)內(nèi)的字符串按原樣輸出?!埃躰”是換行符,即在輸出“Helloworld!”后回車換行。

{}是函數(shù)開始和結(jié)束的標(biāo)志,不可省每個(gè)C語(yǔ)句以分號(hào)結(jié)束

#是預(yù)處理命令行起始符號(hào)。使用標(biāo)準(zhǔn)庫(kù)函數(shù)時(shí)應(yīng)在程序開頭一行寫:#includestdio.h>說(shuō)明:本程序的運(yùn)行結(jié)果:

Helloworld!1.4最簡(jiǎn)單的C程序的構(gòu)成例1.2

求兩個(gè)整數(shù)之和。#include<stdio.h>voidmain(){inta,b,sum;a=11;b=45;

sum=a+b;

printf(“sumis%d\n”,sum);}

/*求兩數(shù)之和*/

/*變量聲明部分*//*賦值語(yǔ)句*//*輸出函數(shù)*/

本程序的運(yùn)行結(jié)果:sumis561.4最簡(jiǎn)單的C程序的構(gòu)成

說(shuō)明本程序中各行右側(cè)的/*……*/表示注釋。逗號(hào)主要用在變量類型說(shuō)明中分隔各個(gè)變量,是分隔符。在C程序中采用的分隔符最常用的有逗號(hào)和空格兩種??崭穸嘤糜谡Z(yǔ)句各單詞之間,作分隔符?!癷nta,b,sum;”是函數(shù)體中的聲明部分,定義變量a和b,指定a和b為整型(int)變量?!癮=11;b=45;sum=a+b;”是賦值語(yǔ)句。printf函數(shù)中得“%”是輸入輸出的“格式字符串”,用來(lái)指定輸入輸出時(shí)的數(shù)據(jù)類型和格式。

1.4最簡(jiǎn)單的C程序的構(gòu)成例1.3計(jì)算長(zhǎng)為l,寬為w,高為h的長(zhǎng)方體體積v。

#include<stdio.h>viodmain(){intvolume(intlength,intwidth,inthigh);intl,w,h,v;printf("pleaseinputl,w,h:\n");

scanf("%d,%d,%d",&l,&w,&h);v=volume(l,w,h);

printf("v=%d",v);

return;}intvolume(intlength,intwidth,inthigh)

{intv;v=length*width*high; returnv; }程序運(yùn)行結(jié)果:pleaseinputl,w,h:4,3,2↙

v=241.4最簡(jiǎn)單的C程序的構(gòu)成說(shuō)明:本程序包括main和被調(diào)用函數(shù)volume兩個(gè)函數(shù)。max函數(shù)的作用是計(jì)算一個(gè)長(zhǎng)方體的體積。return語(yǔ)句將z的值返回給主調(diào)函數(shù)main。2.C源程序的結(jié)構(gòu)特點(diǎn)(1)C程序是由函數(shù)構(gòu)成的。一個(gè)C源程序至少且僅包含一個(gè)main函數(shù)。(2)一個(gè)C程序總是從main函數(shù)開始執(zhí)行的。(3)C源程序中可以有預(yù)處理命令,預(yù)處理命令通常應(yīng)放在源文件或源程序的最前面。(4)C程序的基本單位是函數(shù)。被調(diào)用的函數(shù)可以是系統(tǒng)提供的庫(kù)函數(shù)(如printf和scanf等輸入輸出函數(shù)),也可以是用戶自定義函數(shù)(如volume函數(shù))。

1.4最簡(jiǎn)單的C程序的構(gòu)成3.C函數(shù)的組成(1)函數(shù)首部。即函數(shù)的第1行,包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)(形式參數(shù)名、參數(shù)類型)。一個(gè)函數(shù)名后面必須跟一對(duì)圓括號(hào),括號(hào)內(nèi)寫函數(shù)的參數(shù)名及其類型。例如,例1.3中的volume函數(shù)的首部為:(2)函數(shù)體。即函數(shù)首部下面的花括號(hào)內(nèi)的部分。①聲明部分。定義所用到的變量和對(duì)所調(diào)用函數(shù)的聲明。②執(zhí)行部分。由若干個(gè)C語(yǔ)句組成。1.4最簡(jiǎn)單的C程序的構(gòu)成說(shuō)明:(1)空函數(shù):有時(shí)函數(shù)可以既無(wú)聲明部分也無(wú)執(zhí)行部分。如:voidexample1(){}它是一個(gè),什么也不做,但這是符合C語(yǔ)言規(guī)則的。(2)C語(yǔ)言本身沒(méi)有輸入輸出語(yǔ)句。輸入和輸出的操作是由庫(kù)函數(shù)scanf和printf等函數(shù)來(lái)完成的。由于輸入輸出操作牽涉具體的計(jì)算機(jī)設(shè)備,把輸入輸出操作放在函數(shù)中處理,就可以使C語(yǔ)言本身的規(guī)模較小,編譯程序簡(jiǎn)單,很容易在各種機(jī)器上實(shí)現(xiàn),程序具有可移植性。(3)不同計(jì)算機(jī)系統(tǒng)除了提供標(biāo)準(zhǔn)函數(shù)外,還提供一些專門的函數(shù),因此不同計(jì)算機(jī)系統(tǒng)中所提供的函數(shù)個(gè)數(shù)和功能是有所不同的。ANSIC提供一百多個(gè)庫(kù)函數(shù),TurboC則提供三百多個(gè)庫(kù)函數(shù)。1.4最簡(jiǎn)單的C程序的構(gòu)成4.書寫程序時(shí)應(yīng)遵循的規(guī)則(1)每個(gè)語(yǔ)句和數(shù)據(jù)聲明的最后必須有個(gè)分號(hào),分號(hào)是C語(yǔ)句的必要組成部分。(2)關(guān)鍵字、標(biāo)識(shí)符之間必須至少加一個(gè)空格以示間隔。若已有明顯的間隔符如逗號(hào)、分號(hào)等,也可不再加空格來(lái)間隔。(3)C程序書寫格式自由,一行內(nèi)可以寫幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句可以分寫在多行上。(4)函數(shù)體內(nèi)部用{}括起來(lái)的部分,通常表示程序的某一層次結(jié)構(gòu)。在編程時(shí)應(yīng)力求遵循這些規(guī)則,以養(yǎng)成良好的編程風(fēng)格。(5)可以用/*……*/對(duì)C程序中的任何部分做注釋1.5C語(yǔ)言的運(yùn)行環(huán)境和上機(jī)步驟

1.5.1C語(yǔ)言的運(yùn)行環(huán)境選用TurboC++3.0作為學(xué)習(xí)C語(yǔ)言的運(yùn)行環(huán)境。對(duì)于熟悉VisualC++的人,可以參考與本書配套的《C程序設(shè)計(jì)教程習(xí)題解答與上機(jī)指導(dǎo)》指導(dǎo)書來(lái)學(xué)習(xí)。

TurboC++3.0:是一個(gè)集成環(huán)境,它具有方便、直觀和易用的界面,雖然它也是DOS環(huán)境下的集成環(huán)境,但是可以把啟動(dòng)TurboC++3.0集成環(huán)境的DOS執(zhí)行文件tc.exe生成快捷方式,也可以用鼠標(biāo)操作。1.5C語(yǔ)言的運(yùn)行環(huán)境和上機(jī)步驟

TurboC++3.0的集成環(huán)境可以通過(guò)兩種方法得到TurboC++3.0集成環(huán)境。(1)在DOS環(huán)境下??梢栽贒OS環(huán)境下用鍵盤輸入DOS命令TC即可:D:\TC3.0>TC↙

(2)在Windows環(huán)境下。先通過(guò)瀏覽找到TurboC++3.0集成環(huán)境所在的子目錄(如D:\TC3.0),從中找到可執(zhí)行文件tc.exe,創(chuàng)建其快捷方式,并拖曳到Windows桌面上,用一個(gè)圖標(biāo)表示。雙擊該圖標(biāo),就可打開的TurboC++3.0集成環(huán)境。圖1.4TurboC++3.0集成環(huán)境

1.5C語(yǔ)言的運(yùn)行環(huán)境和上機(jī)步驟

在集成環(huán)境的上部,有一行主菜單,其中包括10個(gè)菜單項(xiàng)。用戶可以通過(guò)以上菜單來(lái)選擇使用集成環(huán)境所提供的TurboC++3.0的各項(xiàng)主要功能。

主菜單,其中包括10個(gè)菜單項(xiàng):

FileEditSearchRunCompileDebugProjectOptionsWindowHelp以上10個(gè)菜單項(xiàng)分別代表:文件、編輯、查找、運(yùn)行、編譯、調(diào)試、項(xiàng)目、選項(xiàng)、窗口、幫助。用鼠標(biāo)可以選擇菜單條中所需要的菜單項(xiàng),單擊此菜單項(xiàng)就會(huì)出現(xiàn)一個(gè)下拉菜單。

1.5C語(yǔ)言的運(yùn)行環(huán)境和上機(jī)步驟

1.5.2C程序的上機(jī)步驟

所謂程序,就是一組計(jì)算機(jī)能識(shí)別和執(zhí)行的指令。每一條指令使計(jì)算機(jī)執(zhí)行特定的操作。用高級(jí)語(yǔ)言編寫的程序稱為“源程序(sourceprogram)”。

TurboC++3.0是一個(gè)集源程序編輯、編譯、連接、運(yùn)行與調(diào)試于一體、用菜單驅(qū)動(dòng)的集成軟件環(huán)境。運(yùn)行一個(gè)C語(yǔ)言程序的一般過(guò)程如圖1.7所示:

編輯編譯源程序f.c有錯(cuò)?連接執(zhí)行結(jié)果正確?目標(biāo)程序f.0bj無(wú)有庫(kù)函數(shù)和其他目標(biāo)程序可執(zhí)行程序f.exe是否開始結(jié)束1.5C語(yǔ)言的運(yùn)行環(huán)境和上機(jī)步驟

說(shuō)明:經(jīng)過(guò)編輯得到一個(gè)源程序文件f.c,然后將源程序文件f.c輸入到計(jì)算機(jī)中,經(jīng)過(guò)編譯得到目標(biāo)程序文件f.obj,再將目標(biāo)程序f.obj均輸入內(nèi)存,與系統(tǒng)提供的庫(kù)函數(shù)等連接,即可得到可執(zhí)行的目標(biāo)程序f.exe,最后把f.exe調(diào)入內(nèi)存并執(zhí)行。即:運(yùn)行C程序的步驟上機(jī)輸入與編輯源程序?qū)υ闯绦蜻M(jìn)行編譯與庫(kù)函數(shù)連接運(yùn)行目標(biāo)程序1編輯源文件新建:?jiǎn)螕鬎ile菜單下的New1.5C語(yǔ)言的運(yùn)行環(huán)境和上機(jī)步驟

1.5C語(yǔ)言的運(yùn)行環(huán)境和上機(jī)步驟

修改:選擇File→Open(即單擊“File”的下拉菜單中的Open項(xiàng),修改已有的源程序。

在編輯(EDIT)狀態(tài)下光標(biāo)表示當(dāng)前進(jìn)行編輯的位置,在此位置可以進(jìn)行插入、刪除或修改,直到自已滿意為止。保存:在完成編輯之后,應(yīng)當(dāng)保存源程序。如果該源程序是已有的,則選擇菜單File

Save命令保存已修改過(guò)的源程序。若源程序是新輸入的,則選擇File->Save命令,并在彈出的SaveFileAs對(duì)話框中的Name欄中輸入文件路徑和文件名,1.5C語(yǔ)言的運(yùn)行環(huán)境和上機(jī)步驟

2.對(duì)源程序進(jìn)行編譯

選擇菜單Compile(或“Alt+F9”)對(duì)源程序進(jìn)行編譯。AA.C源程序,出現(xiàn)1個(gè)錯(cuò)誤(error),0個(gè)警告(warming)。

1.5C語(yǔ)言的運(yùn)行環(huán)境和上機(jī)步驟

3將目標(biāo)程序進(jìn)行連接選擇菜單Compile→Link,如果不出現(xiàn)錯(cuò)誤,會(huì)得到一個(gè)后綴為.exe的可執(zhí)行文件。4執(zhí)行程序

選菜單Run→Run(或按“Ctrl+F9”鍵)。5退出TurboC++3.0環(huán)境退出TC有兩種方法:1)菜單法:File|Quit(先選擇File主項(xiàng),再選擇并執(zhí)行Quit子項(xiàng))2)快捷鍵法:Alt+“X”(先按下Alt鍵并保持,再按字母鍵X,然后同時(shí)放開)。1.5C語(yǔ)言的運(yùn)行環(huán)境和上機(jī)步驟

2.1C的數(shù)據(jù)類型C語(yǔ)言提供了以下一些數(shù)據(jù)類型。給變量定義數(shù)據(jù)類型,實(shí)際上是為數(shù)據(jù)在內(nèi)存中分配規(guī)定的存儲(chǔ)空間,存儲(chǔ)空間通常用字節(jié)數(shù)的形式表示。數(shù)據(jù)類型構(gòu)造類型指針類型空類型void枚舉類型enum數(shù)組類型結(jié)構(gòu)體類型struct共用體類型

union基本類型整型int字符型char實(shí)型(浮點(diǎn)型)單精度f(wàn)loat雙精度

double2.2常量與變量3.2.1常量和符號(hào)常量在程序運(yùn)行過(guò)程中,其值不能被改變的量稱為常量。常量區(qū)分為不同的類型:例如整型100,125,-100,0實(shí)型3.14,0.125,-3.789字符型‘a(chǎn)’,‘b’,‘2’字符串‘a(chǎn)’,‘a(chǎn)b’,‘1232’符號(hào)常量:用一個(gè)標(biāo)識(shí)符代表一個(gè)常量。符號(hào)常量的值在其作用域內(nèi)不能改變,也不能再被賦值。例2.1定義一個(gè)符號(hào)常量PI,表示圓周率。然后使用符號(hào)常量PI計(jì)算圓的周長(zhǎng)。

#include<stdio.h>

#definePI3.14/*定義符號(hào)常量PI,表示3.14*/

voidmain()

{

floatr,l;

r=5.0;

l=2*r*PI;

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

}

程序運(yùn)行結(jié)果為:l=31.400000說(shuō)明:

程序中用#define命令行定義PI代表常量3.14,此后凡在本文件中出現(xiàn)的PI都代表3.14,可以和常量一樣進(jìn)行運(yùn)算說(shuō)明:如再用賦值語(yǔ)句給PRICE賦值是錯(cuò)的如:

PRICE=40;/*錯(cuò)誤,不能給符號(hào)常量賦值2.2常量與變量2.2常量與變量2.2.2變量變量代表內(nèi)存中具有特定屬性的一個(gè)存儲(chǔ)單元,它用來(lái)存放數(shù)據(jù),這就是變量的值,在程序運(yùn)行期間,這些值是可以改變的。變量名實(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ù)。2.2常量與變量

變量名必須是標(biāo)識(shí)符

例:sum,_total,month,Stu_name,l_1_2,BC235M.D.John,¥123,3D64,a>b

注意:編譯系統(tǒng)將大寫字母和小寫字母認(rèn)為是兩個(gè)不同的字符。在C語(yǔ)言中,要求對(duì)所有用到的變量作強(qiáng)制定義,也就是“先定義,后使用”,凡未被事先定義的,C編譯系統(tǒng)不把它認(rèn)作變量名,這就能保證程序中變量名使用得正確。

在選擇變量名和其它標(biāo)識(shí)符時(shí),應(yīng)注意做到“見名知意”,即選有含意的英文單詞(或其縮寫)作標(biāo)識(shí)符。每一個(gè)變量被指定為一個(gè)確定類型,在編譯時(shí)就能為其分配相應(yīng)的存儲(chǔ)單元。2.3整型數(shù)據(jù)3.3.1整型常量的表示方法整型常量即整常數(shù)。在C語(yǔ)言中,整常數(shù)可用以下三種形式表示:(1)十進(jìn)制整數(shù)。

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

如:0123表示八進(jìn)制數(shù)123,等于十進(jìn)制數(shù)83,-011表示八進(jìn)制數(shù)-11,即十進(jìn)制數(shù)-9。(3)十六進(jìn)制整數(shù)。以0x開頭的數(shù)是16進(jìn)制數(shù)。如:0x123,代表16進(jìn)制數(shù)123,等于十進(jìn)制數(shù)291。-0x12等于十進(jìn)制數(shù)-18。

2.3.2整型變量

1.整型數(shù)據(jù)在內(nèi)存中的存放形式

數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的。

如:

inti;/*定義為整型變量*/

i=17;/*給i賦以整數(shù)17*/2.3整型數(shù)據(jù)注意:十進(jìn)制數(shù)17的二進(jìn)制形式為10001,TurboC++3.0為一個(gè)整型變量在內(nèi)存中分配2個(gè)字節(jié)的存儲(chǔ)單元。數(shù)值是以補(bǔ)碼(complement)表示的。

2.整型變量的分類共六種有符號(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)容是可選的。2.3整型數(shù)據(jù)2.3整型數(shù)據(jù)C語(yǔ)言沒(méi)有具體規(guī)定以上各類數(shù)據(jù)所占內(nèi)存的字節(jié)數(shù),只要求long型數(shù)據(jù)長(zhǎng)度不短于int型,short型不長(zhǎng)于int型。具體如何實(shí)現(xiàn),由各計(jì)算機(jī)系統(tǒng)自行決定。如在TurboC++3.0中,int型和short型數(shù)據(jù)都是16位(bit),而long型數(shù)據(jù)是32位。以整數(shù)13在TurboC++3.0環(huán)境下,在各種整數(shù)類型的存儲(chǔ)單元中的存儲(chǔ)情況如圖所示。3.整型變量的定義C規(guī)定在程序中所有用到的變量都必須在程序中定義,變量說(shuō)明的一般形式為:

數(shù)據(jù)類型名變量名表;(變量名之間用逗號(hào)分隔)

例如:

inta,b,c(指定變量a、b為整型)

unsignedshortc,d;(指定變量c、d為無(wú)符號(hào)短整型)

longe,f;(指定變量e、f為長(zhǎng)整型)2.3整型數(shù)據(jù)例2.2整型變量的定義與使用。

#include<stdio.h>

voidmain()

{

inta,b,c,d;

unsignedu;

a=15;b=-19;u=17;

c=a+u;d=b+u;

printf(“c=a+u=%d,d=b+u=%d\n”,c,d);

}

說(shuō)明

可以看到不同種類的整型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算程序運(yùn)行結(jié)果為:c=a+u=32,d=b+u=-22.3整型數(shù)據(jù)例2.3整型數(shù)據(jù)的溢出(見圖)。

#include<stdio.h>

voidmain()

{

inta,b;

a=32767;b=a+1;

printf("\na=%d,a+1=%d\n",a,b);

a=-32768;b=a-1;

printf("\na=%d,a-1=%d\n",a,b);

}

說(shuō)明:數(shù)值是以補(bǔ)碼表示的。一個(gè)整型變量只能容納-32768~32767范圍內(nèi)的數(shù),無(wú)法表示大于32767或小于-32768的數(shù)。遇此情況就發(fā)生“溢出”。

程序運(yùn)行結(jié)果為:a=32767,a+1=-32768a=-32768,a-1=327672.3整型數(shù)據(jù)4.整型數(shù)據(jù)的溢出2.3.3整型常量的類型(1)一個(gè)整數(shù),如果其值在-32768~+32767范圍內(nèi),認(rèn)為它是int型,它可以賦值給int型和longint型變量。(2)一個(gè)整數(shù),如果其值超過(guò)了上述范圍,而在-2147483637~+2147483647范圍內(nèi),則認(rèn)為它是為長(zhǎng)整型。可以將它賦值給一個(gè)longint型變量。2.3整型數(shù)據(jù)(3)如果所用的C版本分配給shortint與int型數(shù)據(jù)在內(nèi)存中占據(jù)的長(zhǎng)度相同,則它的表數(shù)范圍與int型相同。(4)一個(gè)整常量后面加一個(gè)字母u或U,認(rèn)為是unsignedint型,如果寫成-12345u,則先將-12345轉(zhuǎn)換成其補(bǔ)碼53191,然后按無(wú)符號(hào)數(shù)存儲(chǔ)。(5)在一個(gè)整常量后面加一個(gè)字母l或L,則認(rèn)為是longint型常量。

例如:123l.432L.0L

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

3.4浮點(diǎn)型數(shù)據(jù)規(guī)范化的指數(shù)形式:

在字母e(或E)之前的小數(shù)部分中,小數(shù)點(diǎn)左邊應(yīng)只有一位非零的數(shù)字。在C程序中,一個(gè)浮點(diǎn)數(shù)在用指數(shù)形式輸出時(shí),是按規(guī)范化的指數(shù)形式輸出的。

例如:123.456可以表示為:123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e

其中的1.23456e3稱為“規(guī)范化的指數(shù)形式”。2.4實(shí)型數(shù)據(jù)2.4.2實(shí)型變量

1.實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式

一個(gè)浮點(diǎn)型數(shù)據(jù)一般在內(nèi)存中占4個(gè)字節(jié)(32位)。與整型數(shù)據(jù)的存儲(chǔ)方式不同,浮點(diǎn)型數(shù)據(jù)是按照指數(shù)形式存儲(chǔ)的。系統(tǒng)把一個(gè)浮點(diǎn)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式。2.4實(shí)型數(shù)據(jù)2.實(shí)型變量的分類和定義

實(shí)型變量分為單精度(float型)、雙精度(double型)和長(zhǎng)雙精度型(longdouble)三類形式。表2.2實(shí)型數(shù)據(jù)的分類例如:floatx1,x2;(指定x1、x2為單精度浮點(diǎn)數(shù))doubley1;(指定y1為雙精度浮點(diǎn)數(shù))longdoublez1;(指定z1為長(zhǎng)雙精度浮點(diǎn)數(shù))

2.4實(shí)型數(shù)據(jù)例2.4實(shí)型數(shù)據(jù)的舍入誤差。

#include<stdio.h>

voidmain()

{

floatx1,x2;

x1=333333.222E5

x2=x1+30;

printf("x1=%f\n",x1);

printf("x2=%f\n",x2);

}

說(shuō)明:一個(gè)浮點(diǎn)型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是無(wú)意義的,并不準(zhǔn)確地表示該數(shù)。應(yīng)當(dāng)避免將一個(gè)很大的數(shù)和一個(gè)很小的數(shù)直接相加或相減,否則就會(huì)“丟失”小的數(shù)。與此類似,用計(jì)算機(jī)計(jì)算1.0/3.0×3.0的結(jié)果不可能等于1.0。程序運(yùn)行結(jié)果為:x1=33333321728.000000x2=33333321728.0000002.4實(shí)型數(shù)據(jù)3.實(shí)型數(shù)據(jù)的舍入誤差2.4.3實(shí)型常量的類型

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

例如:f=2.45678*4523.65

系統(tǒng)先把2.45678和4523.65作為雙精度數(shù),然后進(jìn)行相乘的運(yùn)算,得到的乘也是一個(gè)雙精度數(shù)。最后取其前7位賦給浮點(diǎn)型變量f。如是在數(shù)的后面加字母f或F(如1.65f,654.87F),這樣編譯系統(tǒng)就會(huì)把它們按單精度(32位)處理。假如:

floaty;y=1234567.1111;float型變量y只能接收7位有效數(shù)字2.4實(shí)型數(shù)據(jù)2.5字符型數(shù)據(jù)2.5.1字符常量(1)字符常量只能用單引號(hào)括起來(lái),不能用雙引號(hào)或其他括號(hào)。(2)字符常量只能是單個(gè)字符。(3)字符可以是字符集中任意字符。

(4)C語(yǔ)言還允許用一種特殊形式的字符常量,就是以一個(gè)字符“\”開頭的字符序列,稱之為“轉(zhuǎn)義字符”。

表2.3轉(zhuǎn)義字符及其含義

有些以“\”開頭的特殊字符稱為轉(zhuǎn)義字符\n

換行\(zhòng)t

橫向跳格\r

回車\\

反斜杠\dddddd表示1到3位八進(jìn)制數(shù)字\xhhhh表示1到2位十六進(jìn)制數(shù)字2.5字符型數(shù)據(jù)例2.5

轉(zhuǎn)義字符的使用。

#include<stdio.h>

voidmain()

{

inta,b,c;

a=5;b=6;c=7;

printf("%d\n\t%d%d\n%d%d\t\b%d\n",a,b,c,a,b,c);

}

程序運(yùn)行時(shí)輸出以下結(jié)果:2.5字符型數(shù)據(jù)2.5.2字符型變量1.字符型變量分類和定義字符型變量用來(lái)存放字符常量,注意只能放一個(gè)字符。一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。

字符變量的定義形式如下:charc1,c2;在本函數(shù)中可以用下面語(yǔ)句對(duì)c1,c2賦值:

c1=‘a(chǎn)’;c2=‘b’;2.5字符型數(shù)據(jù)2.字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)是將字符的ASCII碼值以二進(jìn)制形式存放,占用1個(gè)字節(jié)。也就是說(shuō)將一個(gè)字符型常量放到一個(gè)字符變量中,實(shí)際上并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲(chǔ)單元中。

這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。一個(gè)字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。2.5字符型數(shù)據(jù)例2.6

向字符型變量賦值。

#include<stdio.h>

voidmain()/*字符'a'的各種表達(dá)方法*/

{

charc1,c2,c3,c4,c5,c6;

c1='a';c2='\x61';c3='\141';

c4=97;c5=0x61;c6=0141;

printf("c1=%c,c2=%c,c3=%c\n",c1,c2,c3);

printf("c4=%c,c5=%c,c6=%c\n",c4,c5,c6);

printf("c1=%d,c2=%d,c3=%d\n",c1,c2,c3);

printf("c4=%d,c5=%d,c6=%d\n",c4,c5,c6);

}

程序運(yùn)行結(jié)果:c1=a,c2=a,c3=ac4=a,c5=a,c6=ac1=97,c2=97,c3=97c4=97,c5=97,c6=972.5字符型數(shù)據(jù)例2.7

字符型數(shù)據(jù)的轉(zhuǎn)換。

#include<stdio.h>

voidmain()

{

charc1,c2,c3;

c1='a';

c2='b';

c1=c1-32;

c2=c2-32;

c3=157;

printf("\nc1=%cc2=%cc3=%c\n",c1,c2,c3);

printf("c1=%dc2=%dc3=%d\n",c1,c2,c3);

}

程序運(yùn)行結(jié)果:c1=Ac2=Bc3=¥

c1=65c2=66c3=-99

2.5字符型數(shù)據(jù)注意:需要進(jìn)一步說(shuō)明的是有些系統(tǒng)(如TurboC++3.0)將字符變量定義為signedchar型。其存儲(chǔ)單元中的最高位作為符號(hào)位,它的取值范圍就是-128~127。

如果在字符變量中存放一個(gè)ASCII碼為0~127間的字符,由于字節(jié)中最高位為0,因此用%d輸出字符變量時(shí),輸出的是一個(gè)正整數(shù)。如果在字符變量中存放一個(gè)ASCII碼為128~255間的字符,由于在字節(jié)中最高位為1,用%d格式符輸出時(shí),就會(huì)得到一個(gè)負(fù)整數(shù),

2.5字符型數(shù)據(jù)2.5.3字符串常量C語(yǔ)言除了允許使用字符常量外,還允許使用字符串常量。字符串常量是一對(duì)雙引號(hào)括起來(lái)的字符序列。例如:

”ThisisaCprogram.”,”CHINA”,”a”,”a1f3.45”也可以利用printf函數(shù)可以輸出一個(gè)字符串。例如:printf("All

alone

in

a

foreign

land.");2.5字符型數(shù)據(jù)設(shè)ch1被指定為字符變量:charch1;ch1=’a’;是正確的?!帷亲址A慷鴆h1=”a”;則是錯(cuò)誤的?!保帷笔亲址A浚靡?guī)定:在每一個(gè)字符串常量的結(jié)尾加一個(gè)“字符串結(jié)束標(biāo)志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。C規(guī)定以字符’\0’作為字符串結(jié)束標(biāo)志。2.5字符型數(shù)據(jù)注意:在寫字符串時(shí)不必加’\0’,因?yàn)椤痋0’字符是系統(tǒng)自動(dòng)加上的。在C語(yǔ)言中沒(méi)有專門的字符串變量,如果想將一個(gè)字符串存放在變量中以便保存,必須使用字符數(shù)組,即用一個(gè)字符型數(shù)組來(lái)存放一個(gè)字符串。2.6變量初始化和變量賦初值

(1)C語(yǔ)言允許在定義變量的同時(shí)使變量初始化。如:inta=3;//指定a為整型變量,初值為3

floatf=3.56;//指定f為浮點(diǎn)型變量,初值為3.56

charc=‘a(chǎn)’;//指定c為字符變量,初值為‘a(chǎn)’(2)可以使被定義的變量的一部分賦初值。如:

inta,b,c=5;表示指定a、b、c為整型變量,但只對(duì)c初始化,c的初值為5

2.6變量初始化和變量賦初值

(3)如果對(duì)幾個(gè)變量賦以同一個(gè)初值,應(yīng)寫成:inta=3,b=3,c=3;表示a、b、c的初值都是3。不能寫成∶

inta=b=c=3;

注意:初始化不是在編譯階段完成的,而是在程序運(yùn)行時(shí)執(zhí)行本函數(shù)時(shí)賦初值的,相當(dāng)于有一個(gè)賦值語(yǔ)句。2.7算術(shù)運(yùn)算符和算術(shù)表達(dá)式

2.7.1C語(yǔ)言運(yùn)算符簡(jiǎn)介

C的運(yùn)算符有以下幾類:(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)算符())2.7算術(shù)運(yùn)算符和算術(shù)表達(dá)式

2.7.2基本算術(shù)運(yùn)算符和算術(shù)表達(dá)式1.基本的算術(shù)運(yùn)算符+(加法運(yùn)算符,或正值運(yùn)算符,如:3+5、+3)-(減法運(yùn)算符,或負(fù)值運(yùn)算符,如:5-2、-3)*(乘法運(yùn)算符,如:3*5)/(除法運(yùn)算符,包括整數(shù)除和實(shí)數(shù)除,如25/3、4.2/2.0)%(模運(yùn)算符,或稱求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如:7%4的值為3)。2.7算術(shù)運(yùn)算符和算術(shù)表達(dá)式

2.算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù))連接起來(lái)的、符合C語(yǔ)法規(guī)則的式子,稱為C算術(shù)表達(dá)式。運(yùn)算對(duì)象包括常量、變量、函數(shù)等。例如:

a*b/c-1.5+′a′

是一個(gè)合法的表達(dá)式。2.7算術(shù)運(yùn)算符和算術(shù)表達(dá)式

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

算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笾劣摇?,即先左后右?/p>

注意:C語(yǔ)言規(guī)定了各種運(yùn)算符的結(jié)合方向(結(jié)合性),“自左至右的結(jié)合方向’’又稱“左結(jié)合性”,即運(yùn)算對(duì)象先與左面的運(yùn)算符結(jié)合。有些運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆?例如,賦值運(yùn)算符)。

在程序運(yùn)行時(shí),系統(tǒng)會(huì)自動(dòng)進(jìn)行結(jié)合性的運(yùn)算的。2.7算術(shù)運(yùn)算符和算術(shù)表達(dá)式

2.7.3自增、自減運(yùn)算符自增運(yùn)算符記為“++”,其功能是使變量的值自增1。自減1運(yùn)算符記為“--”,其功能是使變量值自減1。如:

++i,--i(在使用i之前,先使i的值加(減)1)i++,i--(在使用i之后,使i的值加(減)1)

2.7算術(shù)運(yùn)算符和算術(shù)表達(dá)式

說(shuō)明:一般來(lái)說(shuō),++i和i++的作用相當(dāng)于i=i+1。但++i和i++不同之處在于++i是先執(zhí)行i=i+1后,再使用i的值;而i++是先使用i的值后,再執(zhí)行i=i+1。--i和i--的作用相當(dāng)于i=i-1。但--i和i--不同之處在于--i是先執(zhí)行i=i-1后,再使用i的值;而i--是先使用i的值后,再執(zhí)行i=i-1。

i++與++i的區(qū)別:

++i是先執(zhí)行i=i+1后,再使用i的值;i++是先使用i的值后,再執(zhí)行i=i+1。例如:①j=++i;

i的值先變成4,再賦給j,j的值均為4②j=i++;先將i的值3賦給j,j的值為3,然后i變?yōu)椋?.7算術(shù)運(yùn)算符和算術(shù)表達(dá)式

注意:

(1)自增運(yùn)算符(++),自減運(yùn)算符(--),只能用于變量,而不能用于常量或表達(dá)式,(2)++和--的結(jié)合方向是“自右至左”。如:9++或(a+b)++都是不合法的。

因?yàn)?是常量,常量的值不能改變,不可能出現(xiàn)“9=9+1”的形式。

(a+b)++也不可能實(shí)現(xiàn),因?yàn)樽栽?、自減運(yùn)算還有一種給變量賦值的功能。2.7算術(shù)運(yùn)算符和算術(shù)表達(dá)式

例2.8變量自增、自減運(yùn)算舉例。#include<stdio.h>voidmain(){inti=7;/*i的初值為7*/printf("%d",++i);/*i加1后輸出故為8*/printf("%d",--i);/*i減1后輸出故為7*/printf("%d",i++);/*輸出i為7之后再加1(為8)*/printf("%d",i--);/*輸出i為8之后再減1(為7)*/printf("%d",-i++);/*輸出-7之后i再加1(為8)*/printf("%d\n",-i--);}/*輸出-8之后i再減1(為7)*/

2.7算術(shù)運(yùn)算符和算術(shù)表達(dá)式

程序運(yùn)行結(jié)果:8778-7-8例2.9較復(fù)雜的變量自增、自減運(yùn)算舉例。#include<stdio.h>voidmain(){inti=3,j=6,p,q;

p=(i++)+(i++)+(i++);

q=(++j)+(++j)+(++j);

printf("p=%dq=%di=%dj=%d\n",p,q,i,j);}2.7算術(shù)運(yùn)算符和算術(shù)表達(dá)式

程序運(yùn)行結(jié)果:2.7.4有關(guān)算術(shù)表達(dá)式使用中的問(wèn)題說(shuō)明(1)ANSIC并沒(méi)有具體規(guī)定表達(dá)式的求值順序,允許各編譯系統(tǒng)自己安排。

例如:對(duì)表達(dá)式a=f1()+f2()

并不是所有的編譯系統(tǒng)都先調(diào)用f1(),然后調(diào)用f2()。在有的情況下結(jié)果可能不同。有時(shí)會(huì)出現(xiàn)一些令人容易搞混的問(wèn)題,因此務(wù)必要小心謹(jǐn)慎。例2.10自增自減運(yùn)算的求值順序。

2.7算術(shù)運(yùn)算符和算術(shù)表達(dá)式

(2)C編譯系統(tǒng)在處理程序時(shí)盡可能多地(自左而右)將若干個(gè)字符組成一個(gè)運(yùn)算符、標(biāo)識(shí)符和關(guān)鍵字。

C語(yǔ)言中有的運(yùn)算符為一個(gè)字符,有的運(yùn)算符由兩個(gè)字符組成,為避免誤解,最好采取大家都能理解的寫法。例如:不要寫成i+++j的形式,而應(yīng)寫成(i++)+j的形式2.7算術(shù)運(yùn)算符和算術(shù)表達(dá)式

(3)在調(diào)用函數(shù)時(shí),實(shí)參數(shù)的求值順序,C標(biāo)準(zhǔn)并無(wú)統(tǒng)一規(guī)定。例如:i的初值為3,如果有下面的函數(shù)調(diào)用:

printf(″%d,%d″,i,i++)

在有的系統(tǒng)中,從左至右求值,輸出“3,3”。在多數(shù)系統(tǒng)中對(duì)函數(shù)參數(shù)的求值順序是自右而左,輸出的是“4,3”。以上這種寫法不宜提倡,最好改寫成

j=i++;printf("%d,%d",j,i)

不要寫出別人看不懂的也不知道系統(tǒng)會(huì)怎樣執(zhí)行程序2.7算術(shù)運(yùn)算符和算術(shù)表達(dá)式

2.8各種數(shù)值類型數(shù)據(jù)間的轉(zhuǎn)換和運(yùn)算

2.8.1隱式轉(zhuǎn)換整型(包括int,short,long)、浮點(diǎn)型(包括float,double)可以混合運(yùn)算。在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。轉(zhuǎn)換的目的是:(1)將短的數(shù)擴(kuò)展成機(jī)器處理的長(zhǎng)度。(2)使得運(yùn)算符兩側(cè)的數(shù)據(jù)類型相同。例如:下面式子在C語(yǔ)言中是能夠通過(guò)類型轉(zhuǎn)換進(jìn)行計(jì)算的。63+’a’-16*8+15.95該類型轉(zhuǎn)換是由系統(tǒng)自動(dòng)進(jìn)行的,轉(zhuǎn)換的規(guī)則:如圖(3)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符

可以利用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式轉(zhuǎn)換成所需類型。

一般形式:(類型名)(表達(dá)式)例如:(double)a將a轉(zhuǎn)換成double類型(int)(x+y)將x+y的值轉(zhuǎn)換成整型(float)(5%3)將5%3的值轉(zhuǎn)換成float型2.8各種數(shù)值類型數(shù)據(jù)間的轉(zhuǎn)換和運(yùn)算

2.8各種數(shù)值類型數(shù)據(jù)間的轉(zhuǎn)換和運(yùn)算

說(shuō)明:需要轉(zhuǎn)換的表達(dá)式應(yīng)該用括號(hào)括起來(lái)。在強(qiáng)制類型轉(zhuǎn)換時(shí),得到一個(gè)所需類型的中間變量,原來(lái)變量的類型未發(fā)生變化。

floatx=3.6;inta;a=(int)x;注意:強(qiáng)制類型轉(zhuǎn)換實(shí)際上是一種單目運(yùn)算。各種數(shù)據(jù)類型名都可以用來(lái)作強(qiáng)制類型換的運(yùn)算符,如(char)、(int)、(float)等。

2.9賦值運(yùn)算符和賦值表達(dá)式

1.賦值運(yùn)算符和賦值表達(dá)式賦值符號(hào)“=”就是賦值運(yùn)算符,它的作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量。也可以將一個(gè)表達(dá)式的值賦給一個(gè)變量。

賦值運(yùn)算符按照“自右而左”的結(jié)合順序

賦值表達(dá)式是賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子。它的一般形式為:

<變量><賦值運(yùn)算符><表達(dá)式>下面是賦值表達(dá)式的例子:k=b=c=7k=5+(c=6)k=(b=5)+(c=4)k=(b=8)%(c=3)2.類型轉(zhuǎn)換如果賦值運(yùn)算符兩側(cè)的類型不一致,但都是數(shù)值型或字符型時(shí),在賦值時(shí)要進(jìn)行類型轉(zhuǎn)換。

(1)將實(shí)型數(shù)據(jù)(單、雙精度)賦給整型變量,舍棄實(shí)數(shù)的小數(shù)部分,以整數(shù)形式存儲(chǔ)到變量中。如:i為整型變量,執(zhí)行“i=3.56”的結(jié)果是使i的值為3,以整數(shù)形式存儲(chǔ)在整型變量中。例2.11將實(shí)型數(shù)據(jù)賦值給整型變量。

(2)將double型數(shù)據(jù)賦給float型變量時(shí),截取其前面7位有效數(shù)字,存放到float變量的存儲(chǔ)單元中(32bits)。但同樣應(yīng)注意數(shù)值范圍不能溢出。

2.9賦值運(yùn)算符和賦值表達(dá)式

(3)char型數(shù)據(jù)賦給int、short、long型整型變量時(shí),由于字符只占1個(gè)字節(jié),而整型變量占2個(gè)字節(jié)或4個(gè)字節(jié),因此將字符數(shù)據(jù)(8個(gè)二進(jìn)制位)放到整型變量存儲(chǔ)單元的低8位中。有兩種情況如下。

①零擴(kuò)展:高位補(bǔ)零。②符號(hào)擴(kuò)展:按字符最高位(符號(hào)位為0或1)碼補(bǔ)高位。

2.9賦值運(yùn)算符和賦值表達(dá)式

(4)將一個(gè)int、short、long型數(shù)據(jù)賦給一個(gè)char型變量時(shí),只將其低8位原封不動(dòng)地送到char型變量(即高位截去)。若將一個(gè)long型數(shù)據(jù)賦給一個(gè)int型變量,只將long型數(shù)據(jù)中低16位原封不動(dòng)地送到整型變量(即高位截去)。

例如:longa=32769;intb;b=a;2.9賦值運(yùn)算符和賦值表達(dá)式

(5)將unsignedint型數(shù)據(jù)賦給longint型變量時(shí),不存在符號(hào)擴(kuò)展問(wèn)題,只需將高位補(bǔ)0即可。

說(shuō)明:不同類型的整型數(shù)據(jù)間的賦值歸根到底就是一條:按存儲(chǔ)單元中的存儲(chǔ)形式直接傳送。

例2.12不同數(shù)據(jù)類型間的賦值。

2.9賦值運(yùn)算符和賦值表達(dá)式

2.9賦值運(yùn)算符和賦值表達(dá)式

類型轉(zhuǎn)換小結(jié)如果表達(dá)式值的類型,與被賦值變量的類型不一致,但都是數(shù)值型或字符型時(shí),系統(tǒng)自動(dòng)地將表達(dá)式的值轉(zhuǎn)換成被賦值變量的數(shù)據(jù)類型,然后再賦值給變量。float\double

int去掉小數(shù)—>高位截取int

float\double按浮點(diǎn)數(shù)形式存儲(chǔ)double

float增加精度char

inta.高位補(bǔ)0b.符號(hào)擴(kuò)展int\short\long

char高位截取int

long符號(hào)擴(kuò)展unsignedint

long高位補(bǔ)0非Unsigned

unsigned原樣照賦

3.復(fù)合的賦值運(yùn)算符和賦值表達(dá)式在賦值運(yùn)算符“=”之前加上其他二目運(yùn)算符可構(gòu)成復(fù)合賦值符。即:+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=例如:a+=5等價(jià)于a=a+5x*=y+7等價(jià)于x=x*(y+7)r%=p等價(jià)于r=r%p2.9賦值運(yùn)算符和賦值表達(dá)式

討論1:賦值表達(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。討論2:賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符。例如:若a為3,求下列表達(dá)式的值:a+=a-=a*=a2.9賦值運(yùn)算符和賦值表達(dá)式

討論3:將賦值表達(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ǔ)句中完成了賦值和輸出雙重功能。2.9賦值運(yùn)算符和賦值表達(dá)式

2.10位運(yùn)算

運(yùn)算符含義運(yùn)算符含義

&按位與~取反

|按位或<<左移∧按位異或>>右移說(shuō)明:(1)位運(yùn)算符中除~以外,均為二目(元)運(yùn)算符。(2)運(yùn)算量只能是整型或字符型的數(shù)據(jù),不能為實(shí)型數(shù)據(jù)。所謂位運(yùn)算是指進(jìn)行二進(jìn)制位的運(yùn)算。在系統(tǒng)軟件中,常要處理二進(jìn)制位的問(wèn)題。例如,將一個(gè)存儲(chǔ)單元中的各二進(jìn)制位左移或右移一位,兩個(gè)數(shù)按位相加等。

C語(yǔ)言提供的位運(yùn)算符有:

2.10.1位運(yùn)算符及其功能

1.“按位與”運(yùn)算符(&)

&運(yùn)算是雙目運(yùn)算,其基本規(guī)則是將參加運(yùn)算的兩個(gè)數(shù)據(jù),按二進(jìn)制位進(jìn)行“按位與”運(yùn)算。

即:&0=00&1=01&0=01&1=1

例如:inta1=0x19,a2=0x35,b;b=a1&a2;注意:如果參加&運(yùn)算的是負(fù)數(shù)(如-3&-5),則要以補(bǔ)碼形式表示為二進(jìn)制數(shù),然后再按位進(jìn)行“與”運(yùn)算。2.10位運(yùn)算

按位與有一些特殊的用途:

(1)清零。若想對(duì)一個(gè)存儲(chǔ)單元清零,即使其全部二進(jìn)制位為0,只要找一個(gè)二進(jìn)制數(shù),其中各個(gè)位符合以下條件:原來(lái)的數(shù)中為1的位,新數(shù)中相應(yīng)位為0。然后使二者進(jìn)行&運(yùn)算,即可達(dá)到清零目的。2.10位運(yùn)算

(2)取一個(gè)數(shù)中某些指定位。

如有一個(gè)整數(shù)a(2個(gè)字節(jié)),想要取其中的低字節(jié),只需將a與8個(gè)1按位與即可。0010110010101100abc000000001111111100000000101011002.10位運(yùn)算

2“按位或”運(yùn)算符(|)|運(yùn)算是雙目運(yùn)算,其基本規(guī)則是將參加運(yùn)算的兩個(gè)數(shù)據(jù),按二進(jìn)制位進(jìn)行“按位或”運(yùn)算。即0|0=0,0|1=1,1|0=1,1|1=1例如:inta1=0x19,a2=0x35,b;b=a1|a2;2.10位運(yùn)算

“按位或”

運(yùn)算一個(gè)的用途示對(duì)一個(gè)數(shù)據(jù)的某些位定值為13.“按位異或”運(yùn)算符(∧)

∧運(yùn)算的功能是將參加運(yùn)算的兩個(gè)數(shù)據(jù),按位異或運(yùn)算,也稱XOR運(yùn)算符。即:

0∧0=00∧1=11∧0=11∧1=0

2.10位運(yùn)算

例如:inta1=0x19,a2=0x35,b;b=a1∧a2;則其運(yùn)算的情況如下:

例如:有01100110,想使其低4位翻轉(zhuǎn),即1變?yōu)?,0變?yōu)???梢詫⑺c0000111l進(jìn)行∧運(yùn)算,即01100110∧0000111l=01101001?!倪\(yùn)算符應(yīng)用:

(1)使特定位翻轉(zhuǎn)與0相∧,保留原值

01100110∧00001111

011010012.10位運(yùn)算

(2)交換兩個(gè)值,不用臨時(shí)變量。

例如:將a和b兩個(gè)整數(shù)的值互換,可以利用如下語(yǔ)句實(shí)現(xiàn):inta=0xff00,b=0x88aa;a=a∧b;b=b∧a;a=a∧b;

自己演算一下!4.“按位取反”運(yùn)算符(~)

~是一個(gè)單目運(yùn)算符,用來(lái)對(duì)一個(gè)二進(jìn)制數(shù)按位取反,即將0變l,將1變0。

即:

0=1~1=0

例如:(~)0000000000000101(5)1111111111111010(八進(jìn)制數(shù)177752)(-6)2.10位運(yùn)算

5.左移運(yùn)算符(<<)

<<是雙目運(yùn)算,其功能式將一個(gè)數(shù)的各個(gè)二進(jìn)制位全部左移若干位。其左邊是需要移位的對(duì)象,右邊是一個(gè)整型表達(dá)式,代表要左移的位數(shù)。移位時(shí)右端補(bǔ)0,左端移出的位棄舍。

例如:

inta=128,b;

b=a<<2;

2.10位運(yùn)算

注意:在實(shí)際應(yīng)用中,左移比乘法運(yùn)算快得多,有些C編譯程序自動(dòng)將乘2的運(yùn)算用左移乘2n的冪運(yùn)算處理為左移n位。

例如:左移1位相當(dāng)于該數(shù)乘以2,左移2位相當(dāng)于該數(shù)乘以22=4,15<<2=60,即乘了4。但此結(jié)論只適用于該數(shù)左移時(shí)被溢出舍棄的高位中不包含1的情況。假設(shè)以一個(gè)字節(jié)(8位)存一個(gè)整數(shù),若a為無(wú)符號(hào)整型變量,則a=64時(shí),左移一位時(shí)溢出的是0,而左移2位時(shí),溢出的高位中包含1。2.10位運(yùn)算

6.右移運(yùn)算符(>>)>>是雙目運(yùn)算,其功能式將一個(gè)數(shù)的各個(gè)二進(jìn)制位全部右移若干位。>>運(yùn)算符左邊是需要移位的對(duì)象,右邊是一個(gè)整型表達(dá)式,代表要右移的位數(shù)。

移位時(shí)右端移出的位棄舍。對(duì)于unsigned數(shù)和正數(shù)左端補(bǔ)0,對(duì)于負(fù)數(shù)左端補(bǔ)1。注意:右移一位相當(dāng)于除以2右移n位相當(dāng)于除以2n。2.10位運(yùn)算

例如:inta1=9,a2=-8,b1,b2;b1=a1>>2;b2=a2>>2;2.10位運(yùn)算

在右移時(shí),需要注意符號(hào)位問(wèn)題:有的系統(tǒng)移入0,有的系統(tǒng)移入1。移入0的稱為“邏輯右移”,即簡(jiǎn)單右移;移入1的稱為“算術(shù)右移”。TurboC++3.0和其他一些C編譯采用的是算術(shù)右移,即對(duì)有符號(hào)數(shù)右移時(shí),如果符號(hào)位原來(lái)為1,左面移入高位補(bǔ)1。例如:2.10位運(yùn)算

k的值為十六進(jìn)制數(shù)0xf0f0k:1111000011110000(用二進(jìn)制形式表示)k>>1:0111100001111000(邏輯右移時(shí))k>>l:1111100001111000(算術(shù)右移時(shí))7.位運(yùn)算賦值運(yùn)算符

位運(yùn)算符與賦值運(yùn)算符可以組成復(fù)合賦值運(yùn)算符。例如:&=,|=,>>=,<<=,∧=例:a&=b相當(dāng)于a=a&ba<<=2相當(dāng)于a=a<<22.10位運(yùn)算

8.不同長(zhǎng)度的數(shù)據(jù)進(jìn)行位運(yùn)算如果兩個(gè)數(shù)據(jù)長(zhǎng)度不同(例如long型和int型),進(jìn)行位運(yùn)算時(shí)(如a&b,而a為long型,b為int型),系統(tǒng)會(huì)將二者按右端對(duì)齊。如果b為正數(shù),則左側(cè)16位補(bǔ)滿0;若b為負(fù)數(shù),左端應(yīng)補(bǔ)滿1;如果b為無(wú)符號(hào)整數(shù)型,則左側(cè)添滿0。2.10位運(yùn)算

2.10.2位運(yùn)算舉例

例2.13右移運(yùn)算符(>>)和按位與(&)位運(yùn)算符舉例。

#include"stdio.h"voidmain(){unsigneda,b;printf("inputanumber:");scanf("%d",&a);b=a>>3; /*a右移3位,將右移后的值賦給b*/printf("a=%d\tb=%d\n",a,b);b=b&9; /*將b和9按位與的值賦給b*/printf("a=%d\tb=%d\n",a,b);}2.10位運(yùn)算

程序運(yùn)行結(jié)果:inputanumber:127a=127b=15a=127b=9例2.14左移(<<)、右移(>>)、按位或(|)、按位與(&)位運(yùn)算符舉例。#include"stdio.h"voidmain(){chara=’a’,b=’b’;intp,c,d;p=a;p=(p<<2)|b;/*將p左移2位然后和b按位與運(yùn)算*/d=p&0xff;/*將p和0xff按位與運(yùn)算*/c=(p&0xff00)>>8;printf("a=%d\tb=%d\nc=%d\td=%d\n",a,b,c,d);}2.10位運(yùn)算

程序運(yùn)行結(jié)果:a=97b=98c=1d=2302.11逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式

在C語(yǔ)言中“,”也是一種特殊的運(yùn)算符——逗號(hào)運(yùn)算符,又稱為“順序求值運(yùn)算符”。用逗號(hào)運(yùn)算符將若干個(gè)表達(dá)式連接起來(lái)的式子稱為逗號(hào)表達(dá)式。例如:3+5,a=14,b=4,a+b,r=a+b-2逗號(hào)表達(dá)式的一般形式可以擴(kuò)展為:表達(dá)式1,表達(dá)式2,表達(dá)式3,…,表達(dá)式n

逗號(hào)表達(dá)式的求解過(guò)程是:先求解表達(dá)式1,再求解表達(dá)式2,依次求到表達(dá)式n,表達(dá)式n的值就是整個(gè)逗號(hào)表達(dá)式的值。a的值為14,b的值為4.12,然后求解a+b,得18。整個(gè)逗號(hào)表達(dá)式的值為16。優(yōu)先級(jí):逗號(hào)運(yùn)算符是所有運(yùn)算符中級(jí)別最低的賦值運(yùn)算符的優(yōu)先級(jí)別高于逗號(hào)運(yùn)算符,逗號(hào)運(yùn)算符是所有運(yùn)算符中級(jí)別最低的。

例如,下面兩個(gè)表達(dá)式的,作用是不同的:x=(a=5,7*3)x=a=8,6*2

前一個(gè)是一個(gè)賦值表達(dá)式,將一個(gè)逗號(hào)表達(dá)式的值賦給x,x的值等于21,同時(shí)變量a的值為5。后一個(gè)是逗號(hào)表達(dá)式,包括一個(gè)賦值表達(dá)式和一個(gè)算術(shù)表達(dá)式,x的值為8,整個(gè)逗號(hào)表達(dá)式的值為12,變量a的值為8。

2.11逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式

3.1.1算法概念廣義地說(shuō),為解決一個(gè)問(wèn)題而采取的方法和步驟,就稱為“算法”。要進(jìn)行程序設(shè)計(jì),也必須要有進(jìn)行程序設(shè)計(jì)的算法。1.程序設(shè)計(jì)中的算法著名計(jì)算機(jī)科學(xué)家沃思提出一個(gè)公式

數(shù)據(jù)結(jié)構(gòu)+算法=程序即:一個(gè)程序應(yīng)包括兩個(gè)方面的內(nèi)容:對(duì)數(shù)據(jù)的描述:數(shù)據(jù)結(jié)構(gòu)(da

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論