C語(yǔ)言的發(fā)展過(guò)程_第1頁(yè)
C語(yǔ)言的發(fā)展過(guò)程_第2頁(yè)
C語(yǔ)言的發(fā)展過(guò)程_第3頁(yè)
C語(yǔ)言的發(fā)展過(guò)程_第4頁(yè)
C語(yǔ)言的發(fā)展過(guò)程_第5頁(yè)
已閱讀5頁(yè),還剩135頁(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)介

1、.:.;言語(yǔ)的開(kāi)展過(guò)程 言語(yǔ)是在70年代初問(wèn)世的。一九七八年由美國(guó)電報(bào)公司(AT&T)貝爾實(shí)驗(yàn)室正式發(fā)表了言語(yǔ)。同時(shí)由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE一書。通常簡(jiǎn)稱為,也有人稱之為規(guī)范。但是,在中并沒(méi)有定義一個(gè)完好的規(guī)范C言語(yǔ),后來(lái)由美國(guó)國(guó)家規(guī)范學(xué)會(huì)在此根底上制定了一個(gè)C 言語(yǔ)規(guī)范,于一九八三年發(fā)表。通常稱之為ANSI C。 當(dāng)代最優(yōu)秀的程序設(shè)計(jì)言語(yǔ) 早期的C言語(yǔ)主要是用于UNIX系統(tǒng)。由于言語(yǔ)的強(qiáng)大功能和各方面的優(yōu)點(diǎn)逐漸為人們認(rèn)識(shí),到了八十年代,C開(kāi)場(chǎng)進(jìn)入其它操作系統(tǒng),并很快在各類大、中、小和微型計(jì)算機(jī)上得到

2、了廣泛的運(yùn)用。成為當(dāng)代最優(yōu)秀的程序設(shè)計(jì)言語(yǔ)之一。 言語(yǔ)的特點(diǎn) 言語(yǔ)是一種構(gòu)造化言語(yǔ)。它層次明晰,便于按模塊化方式組織程序,易于調(diào)試和維護(hù)。言語(yǔ)的表現(xiàn)才干和處置才干極強(qiáng)。它不僅具有豐富的運(yùn)算符和數(shù)據(jù)類型,便于實(shí)現(xiàn)各類復(fù)雜的數(shù)據(jù)構(gòu)造。它還可以直接訪問(wèn)內(nèi)存的物理地址,進(jìn)展位(bit)一級(jí)的操作。由于言語(yǔ)實(shí)現(xiàn)了對(duì)硬件的編程操作,因此言語(yǔ)集高級(jí)言語(yǔ)和低級(jí)言語(yǔ)的功能于一體。既可用于系統(tǒng)軟件的開(kāi)發(fā),也適宜于運(yùn)用軟件的開(kāi)發(fā)。此外,言語(yǔ)還具有效率高,可移植性強(qiáng)等特點(diǎn)。因此廣泛地移植到了各類各型計(jì)算機(jī)上,從而構(gòu)成了多種版本的言語(yǔ)。 言語(yǔ)版本 目前最流行的言語(yǔ)有以下幾種: Microsoft C 或稱 MS C B

3、orland Turbo C 或稱 Turbo C AT&T C 這些言語(yǔ)版本不僅實(shí)現(xiàn)了ANSI C規(guī)范,而且在此根底上各自作了一些擴(kuò)展,使之更加方便、完美。 面向?qū)ο蟮某绦蛟O(shè)計(jì)言語(yǔ) 在C的根底上,一九八三年又由貝爾實(shí)驗(yàn)室的Bjarne Strou-strup推出了C+。 C+進(jìn)一步擴(kuò)展和完善了言語(yǔ),成為一種面向 對(duì)象的程序設(shè)計(jì)言語(yǔ)。C+目前流行的最新版本是Borland C+4.5,Symantec C+6.1,和Microsoft VisualC+ 2.0。C+提出了一些更為深化的概念,它所支持的這些面向?qū)ο蟮母拍钊菀讓?wèn)題空間直接地映射到程序空間,為程序員提供了一種與傳統(tǒng)構(gòu)造程序設(shè)計(jì)不同

4、的思想方式和編程方法。因此也添加了整個(gè)言語(yǔ)的復(fù)雜性,掌握起來(lái)有一定難度。 和 但是,C是C+的根底,C+言語(yǔ)和言語(yǔ)在很多方面是兼容的。因此,掌握了言語(yǔ),再進(jìn)一步學(xué)習(xí)C+就能以一種熟習(xí)的語(yǔ)法來(lái)學(xué)習(xí)面向?qū)ο蟮难哉Z(yǔ),從而到達(dá)事半功倍的目的。 源程序的構(gòu)造特點(diǎn) 為了闡明言語(yǔ)源程序構(gòu)造的特點(diǎn),先看以下幾個(gè)程序。這幾個(gè)程 序由簡(jiǎn)到難,表現(xiàn)了言語(yǔ)源程序在組成構(gòu)造上的特點(diǎn)。雖然有關(guān)內(nèi)容還未引見(jiàn),但可從這些例子中了解到組成一個(gè)C源程序的根本部分和書寫格式。 main() printf(c言語(yǔ)世界vcok,您好!n); main是主函數(shù)的函數(shù)名,表示這是一個(gè)主函數(shù)。每一個(gè)C源程序都必需有,且只能有一個(gè)主函數(shù)(ma

5、in函數(shù))。函數(shù)調(diào)用語(yǔ)句,printf函數(shù)的功能是把要輸出的內(nèi)容送到顯示器去顯示。printf函數(shù)是一個(gè)由系統(tǒng)定義的規(guī)范函數(shù),可在程序中直接調(diào)用。 #include stdio.h #include math.h main() double x,s; printf(input number:n); scanf(%lf,&x); s=sin(x); printf(sine of %lf is %lfn,x,s); 每行注釋 include稱為文件包含命令擴(kuò)展名為.h的文件也稱為頭文件或首部文件 定義兩個(gè)實(shí)數(shù)變量,以被后面程序運(yùn)用 顯示提示信息 從鍵盤獲得一個(gè)實(shí)數(shù)x 求x的正弦,并把它賦給變量s

6、顯示程序運(yùn)算結(jié)果 main函數(shù)終了 程序的功能是從鍵盤輸入一個(gè)數(shù)x,求x的正弦值,然后輸出結(jié)果。在main()之前的兩行稱為預(yù)處置命令(詳見(jiàn)后面)。預(yù)處置命令還有其它幾種,這里的include 稱為文件包含命令,其意義是把尖括號(hào)或引號(hào)內(nèi)指定的文件包含到本程序來(lái),成為本程序的一部分。被包含的文件通常是由系統(tǒng)提供的,其擴(kuò)展名為.h。因此也稱為頭文件或首部文件。言語(yǔ)的頭文件中包括了各個(gè)規(guī)范庫(kù)函數(shù)的函數(shù)原型。因此,凡是在程序中調(diào)用一個(gè)庫(kù)函數(shù)時(shí),都必需包含該函數(shù)原型所在的頭文件。在本例中,運(yùn)用了三個(gè)庫(kù)函數(shù):輸入函數(shù)scanf,正弦函數(shù)sin,輸出函數(shù)printf。sin函數(shù)是數(shù)學(xué)函數(shù),其頭文件為math

7、.h文件,因此在程序的主函數(shù)前用include命令包含了math.h。scanf和printf是規(guī)范輸入輸出函數(shù),其頭文件為stdio.h,在主函數(shù)前也用include命令包含了stdio.h文件。 需求闡明的是,C言語(yǔ)規(guī)定對(duì)scanf和printf這兩個(gè)函數(shù)可以省去對(duì)其頭文件的包含命令。所以在本例中也可以刪去第二行的包含命令#include。同樣,在例1.1中運(yùn)用了printf函數(shù),也省略了包含命令。 在例題中的主函數(shù)體中又分為兩部分,一部分為闡明部分,另一部分執(zhí)行部分。闡明是指變量的類型闡明。例題中未運(yùn)用任何變量,因此無(wú)闡明部分。言語(yǔ)規(guī)定,源程序中一切用到的變量都必需先闡明,后運(yùn)用,否那么

8、將會(huì)出錯(cuò)。這一點(diǎn)是編譯型高級(jí)程序設(shè)計(jì)言語(yǔ)的一個(gè)特點(diǎn),與解釋型的BASIC言語(yǔ)是不同的。闡明部分是C源程序構(gòu)造中很重要的組成部分。本例中運(yùn)用了兩個(gè)變量x,s,用來(lái)表示輸入的自變量和sin函數(shù)值。由于sin函數(shù)要求這兩個(gè)量必需是雙精度浮點(diǎn)型,故用類型闡明符double來(lái)闡明這兩個(gè)變量。闡明部分后的四行為執(zhí)行部分或稱為執(zhí)行語(yǔ)句部分,用以完成程序的功能。執(zhí)行部分的第一行是輸出語(yǔ)句,調(diào)用printf函數(shù)在顯示器上輸出提示字符串,請(qǐng)操作人員輸入自變量x的值。第二行為輸入語(yǔ)句,調(diào)用scanf函數(shù),接受鍵盤上輸入的數(shù)并存入變量x中。第三行是調(diào)用sin函數(shù)并把函數(shù)值送到變量s中。第四行是用printf 函數(shù)輸出

9、變量s的值,即x的正弦值。程序終了。 printf(input number:n); scanf(%lf,C10F10&x); s=sin(x); printf(sine of %lf is %lfn,C10F10 x,s); 運(yùn)轉(zhuǎn)本程序時(shí),首先在顯示器屏幕上給出提示串input number,這是由執(zhí)行部分的第一行完成的。用戶在提示下從鍵盤上鍵入某一數(shù),如5,按下回車鍵,接著在屏幕上給出計(jì)算結(jié)果。 輸入和輸出函數(shù) 在前兩個(gè)例子中用到了輸入和輸出函數(shù)scanf和 printf,在第三章中我們要詳細(xì)引見(jiàn)。這里我們先簡(jiǎn)單引見(jiàn)一下它們的格式,以便下面運(yùn)用。scanf和 printf這兩個(gè)函數(shù)分別稱為

10、格式輸入函數(shù)和格式輸出函數(shù)。其意義是按指定的格式輸入輸出值。因此,這兩個(gè)函數(shù)在括號(hào)中的參數(shù)表都由以下兩部分組成:“格式控制串,參數(shù)表 格式控制串是一個(gè)字符串,必需用雙引號(hào)括起來(lái),它表示了輸入輸出量的數(shù)據(jù)類型。各種類型的格式表示法可參閱第三章。在printf函數(shù)中還可以在格式控制串內(nèi)出現(xiàn)非格式控制字符,這時(shí)在顯示屏幕上將原文照印。參數(shù)表中給出了輸入或輸出的量。當(dāng)有多個(gè)量時(shí),用逗號(hào)間隔。例如: printf(sine of %lf is %lfn,x,s); 其中%lf為格式字符,表示按雙精度浮點(diǎn)數(shù)處置。它在格式串中兩次現(xiàn),對(duì)應(yīng)了x和s兩個(gè)變量。其他字符為非格式字符那么照原樣輸出在屏幕上 int

11、max(int a,int b); main() int x,y,z; printf(input two numbers:n); scanf(%d%d,&x,&y); z=max(x,y); printf(maxmum=%d,z); int max(int a,int b) if(ab)return a; else return b; 此函數(shù)的功能是輸入兩個(gè)整數(shù),輸出其中的大數(shù)。 /*函數(shù)闡明*/ /*主函數(shù)*/ /*變量闡明*/ /*輸入x,y值*/ /*調(diào)用max函數(shù)*/ /*輸出*/ /*定義max函數(shù)*/ /*把結(jié)果前往主調(diào)函數(shù)*/ 上面例中程序的功能是由用戶輸入兩個(gè)整數(shù),程序執(zhí)行后輸

12、出其中較大的數(shù)。本程序由兩個(gè)函數(shù)組成,主函數(shù)和max 函數(shù)。函數(shù)之間是并列關(guān)系??蓮闹骱瘮?shù)中調(diào)用其它函數(shù)。max 函數(shù)的功能是比較兩個(gè)數(shù),然后把較大的數(shù)前往給主函數(shù)。max 函數(shù)是一個(gè)用戶自定義函數(shù)。因此在主函數(shù)中要給出闡明(程序第三行)??梢?jiàn),在程序的闡明部分中,不僅可以有變量闡明,還可以有函數(shù)闡明。關(guān)于函數(shù)的詳細(xì)內(nèi)容將在第五章引見(jiàn)。在程序的每行后用/*和*/括起來(lái)的內(nèi)容為注釋部分,程序不執(zhí)行注釋部分。 上例中程序的執(zhí)行過(guò)程是,首先在屏幕上顯示提示串,請(qǐng)用戶輸入兩個(gè)數(shù),回車后由scanf函數(shù)語(yǔ)句接納這兩個(gè)數(shù)送入變量x,y中,然后調(diào)用max函數(shù),并把x,y 的值傳送給max函數(shù)的參數(shù)a,b。在

13、max函數(shù)中比較a,b的大小,把大者前往給主函數(shù)的變量z,最后在屏幕上輸出z的值。 源程序的構(gòu)造特點(diǎn) 1.一個(gè)言語(yǔ)源程序可以由一個(gè)或多個(gè)源文件組成。 2.每個(gè)源文件可由一個(gè)或多個(gè)函數(shù)組成。 3.一個(gè)源程序不論由多少個(gè)文件組成,都有一個(gè)且只能有一個(gè)main函數(shù),即主函數(shù)。 4.源程序中可以有預(yù)處置命令(include 命令僅為其中的一種),預(yù)處置命令通常應(yīng)放在源文件或源程序的最前面。 5.每一個(gè)闡明,每一個(gè)語(yǔ)句都必需以分號(hào)結(jié)尾。但預(yù)處置命令,函數(shù)頭和花括號(hào)“之后不能加分號(hào)。 6.標(biāo)識(shí)符,關(guān)鍵字之間必需至少加一個(gè)空格以示間隔。假設(shè)已有明顯的間隔符,也可不再加空格來(lái)間隔。 書寫程序時(shí)應(yīng)遵照的規(guī)那么

14、從書寫明晰,便于閱讀,了解,維護(hù)的角度出發(fā),在書寫程序時(shí) 應(yīng)遵照以下規(guī)那么: 1.一個(gè)闡明或一個(gè)語(yǔ)句占一行。 2.用 括起來(lái)的部分,通常表示了程序的某一層次構(gòu)造。普通與該構(gòu)造語(yǔ)句的第一個(gè)字母對(duì)齊,并單獨(dú)占一行。 3.低一層次的語(yǔ)句或闡明可比高一層次的語(yǔ)句或闡明縮進(jìn)假設(shè)干格后書寫。以便看起來(lái)更加明晰,添加程序的可讀性。在編程時(shí)應(yīng)力求遵照這些規(guī)那么,以養(yǎng)成良好的編程風(fēng)格。 言語(yǔ)的字符集 字符是組成言語(yǔ)的最根本的元素。言語(yǔ)字符集由字母,數(shù)字,空格,標(biāo)點(diǎn)和特殊字符組成。在字符常量,字符串常量和注釋中還可以運(yùn)用漢字或其它可表示的圖形符號(hào)。 1.字母小寫字母az共26個(gè),大寫字母AZ共26個(gè) 2.數(shù)字09

15、共10個(gè) 3.空白符空格符、制表符、換行符等統(tǒng)稱為空白符??瞻追辉谧址A亢妥址A恐衅鹱饔?。在其它地方出現(xiàn)時(shí),只起間隔作用, 編譯程序?qū)λ鼈兒雎浴R虼嗽诔绦蛑羞\(yùn)用空白符與否,對(duì)程序的編譯不發(fā)生影響,但在程序中適當(dāng)?shù)牡胤竭\(yùn)用空白符將添加程序的明晰性和可讀性。 4.標(biāo)點(diǎn)和特殊字符 言語(yǔ)詞匯 在言語(yǔ)中運(yùn)用的詞匯分為六類:標(biāo)識(shí)符,關(guān)鍵字,運(yùn)算符,分隔符,常量,注釋符等。1.標(biāo)識(shí)符 在程序中運(yùn)用的變量名、函數(shù)名、標(biāo)號(hào)等統(tǒng)稱為標(biāo)識(shí)符。除庫(kù)函數(shù)的函數(shù)名由系統(tǒng)定義外,其他都由用戶自定義。C 規(guī)定,標(biāo)識(shí)符只能是字母(AZ,az)、數(shù)字(09)、下劃線()組成的字符串,并且其第一個(gè)字符必需是字母或下劃線。

16、以下標(biāo)識(shí)符是合法的: a,x,_3x,BOOK_1,sum5 以下標(biāo)識(shí)符是非法的: 3s 以數(shù)字開(kāi)頭 s*T 出現(xiàn)非法字符* -3x 以減號(hào)開(kāi)頭 bowy-1 出現(xiàn)非法字符-(減號(hào)) 在運(yùn)用標(biāo)識(shí)符時(shí)還必需留意以下幾點(diǎn): (1)規(guī)范C不限制標(biāo)識(shí)符的長(zhǎng)度,但它受各種版本的C 言語(yǔ)編譯系統(tǒng)限制,同時(shí)也遭到詳細(xì)機(jī)器的限制。例如在某版本C 中規(guī)定標(biāo)識(shí)符前八位有效,當(dāng)兩個(gè)標(biāo)識(shí)符前八位一樣時(shí),那么被以為是同一個(gè)標(biāo)識(shí)符。 (2)在標(biāo)識(shí)符中,大小寫是有區(qū)別的。例如BOOK和book 是兩個(gè)不同的標(biāo)識(shí)符。 (3)標(biāo)識(shí)符雖然可由程序員隨意定義,但標(biāo)識(shí)符是用于標(biāo)識(shí)某個(gè)量的符號(hào)。因此,命名應(yīng)盡量有相應(yīng)的意義,以便閱讀了

17、解,作到“顧名思義。 2.關(guān)鍵字 關(guān)鍵字是由言語(yǔ)規(guī)定的具有特定意義的字符串,通常也稱為保管字。用戶定義的標(biāo)識(shí)符不應(yīng)與關(guān)鍵字一樣。言語(yǔ)的關(guān)鍵字分為以下幾類: (1)類型闡明符 用于定義、闡明變量、函數(shù)或其它數(shù)據(jù)構(gòu)造的類型。如前面例題中用到的int,double等 (2)語(yǔ)句定義符 用于表示一個(gè)語(yǔ)句的功能。如例1.3中用到的if else就是條件語(yǔ)句的語(yǔ)句定義符。 (3)預(yù)處置命令字 用于表示一個(gè)預(yù)處置命令。如前面各例中用到的include。 3.運(yùn)算符 言語(yǔ)中含有相當(dāng)豐富的運(yùn)算符。運(yùn)算符與變量,函數(shù)一同組成表達(dá)式,表示各種運(yùn)算功能。運(yùn)算符由一個(gè)或多個(gè)字符組成。 4.分隔符 在言語(yǔ)中采用的分隔符有

18、逗號(hào)和空格兩種。逗號(hào)主要用在類型闡明和函數(shù)參數(shù)表中,分隔各個(gè)變量。空格多用于語(yǔ)句各單詞之間,作間隔符。在關(guān)鍵字,標(biāo)識(shí)符之間必需求有一個(gè)以上的空格符作間隔, 否那么將會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤,例如把int a;寫成 inta;C編譯器會(huì)把inta當(dāng)成一個(gè)標(biāo)識(shí)符處置,其結(jié)果必然出錯(cuò)。 5.常量 C 言語(yǔ)中運(yùn)用的常量可分為數(shù)字常量、字符常量、字符串常量、符號(hào)常量、本義字符等多種。在第二章中將專門給予引見(jiàn)。 6.注釋符 C 言語(yǔ)的注釋符是以“/*開(kāi)頭并以“*/結(jié)尾的串。在“/*和“*/之間的即為注釋。程序編譯時(shí),不對(duì)注釋作任何處置。注釋可出如今程序中的任何位置。注釋用來(lái)向用戶提示或解釋程序的意義。在調(diào)試程序中對(duì)

19、暫不運(yùn)用的語(yǔ)句也可用注釋符括起來(lái),使翻譯跳過(guò)不作處置,待調(diào)試終了后再去掉注釋符。在第一課中,我們?cè)?jīng)看到程序中運(yùn)用的各種變量都應(yīng)預(yù)先加以闡明,即先闡明,后運(yùn)用。對(duì)變量的闡明可以包括三個(gè)方面: 數(shù)據(jù)類型 存儲(chǔ)類型 作用域 在本課中,我們只引見(jiàn)數(shù)據(jù)類型闡明。其它闡明在以后各章中陸續(xù)引見(jiàn)。所謂數(shù)據(jù)類型是按被闡明量的性質(zhì),表示方式,占據(jù)存儲(chǔ)空間的多少,構(gòu)造特點(diǎn)來(lái)劃分的。在言語(yǔ)中,數(shù)據(jù)類型可分為:根本數(shù)據(jù)類型,構(gòu)造數(shù)據(jù)類型,指針類型,空類型四大類。 1.根本數(shù)據(jù)類型 根本數(shù)據(jù)類型最主要的特點(diǎn)是,其值不可以再分解為其它類型。也就是說(shuō),根本數(shù)據(jù)類型是自我闡明的。 2.構(gòu)造數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型 是根據(jù)已定義的

20、一個(gè)或多個(gè)數(shù)據(jù)類型用構(gòu)造的方法來(lái)定義的。也就是說(shuō),一個(gè)構(gòu)造類型的值可以分解成假設(shè)干個(gè)“成員或“元素。每個(gè)“成員都是一個(gè)根本數(shù)據(jù)類型或又是一個(gè)構(gòu)造類型。在C言語(yǔ)中,構(gòu)造類型有以下幾種: 數(shù)組類型 構(gòu)造類型 結(jié)合類型 3.指針類型 指針是一種特殊的,同時(shí)又是具有重要作用的數(shù)據(jù)類型。其值用來(lái)表示某個(gè)量在內(nèi)存儲(chǔ)器中的地址。雖然指針變量的取值類似于整型量,但這是兩個(gè)類型完全不同的量,因此不能混為一談。4.空類型在調(diào)用函數(shù)值時(shí),通常應(yīng)向調(diào)用者前往一個(gè)函數(shù)值。這個(gè)前往的函數(shù)值是具有一定的數(shù)據(jù)類型的,應(yīng)在函數(shù)定義及函數(shù)闡明中給以闡明,例如在例題中給出的max函數(shù)定義中,函數(shù)頭為: int max(int a,

21、int b);其中“int 類型闡明符即表示該函數(shù)的前往值為整型量。又如在例題中,運(yùn)用了庫(kù)函數(shù) sin,由于系統(tǒng)規(guī)定其函數(shù)前往值為雙精度浮點(diǎn)型,因此在賦值語(yǔ)句s=sin (x);中,s 也必需是雙精度浮點(diǎn)型,以便與sin函數(shù)的前往值一致。所以在闡明部分,把s闡明為雙精度浮點(diǎn)型。但是,也有一類函數(shù),調(diào)用后并不需求向調(diào)用者前往函數(shù)值, 這種函數(shù)可以定義為“空類型。其類型闡明符為void。在第五章函數(shù)中還要詳細(xì)引見(jiàn)。在本章中,我們先引見(jiàn)根本數(shù)據(jù)類型中的整型、浮點(diǎn)型和字符型。其他類型在以后各章中陸續(xù)引見(jiàn)。 對(duì)于根本數(shù)據(jù)類型量,按其取值能否可改動(dòng)又分為常量和變量?jī)煞N。在程序執(zhí)行過(guò)程中,其值不發(fā)生改動(dòng)的量

22、稱為常量,取值可變的量稱為變量。它們可與數(shù)據(jù)類型結(jié)合起來(lái)分類。例如,可分為整型常量、整型變量、浮點(diǎn)常量、浮點(diǎn)變量、字符常量、字符變量、枚舉常量、枚舉變量。在程序中,常量是可以不經(jīng)闡明而直接援用的,而變量那么必需先闡明后運(yùn)用。 整型量 整型量包括整型常量、整型變量。整型常量就是整常數(shù)。在言語(yǔ)中,運(yùn)用的整常數(shù)有八進(jìn)制、十六進(jìn)制和十進(jìn)制三種。 整型常量 1.八進(jìn)制整常數(shù)八進(jìn)制整常數(shù)必需以0開(kāi)頭,即以0作為八進(jìn)制數(shù)的前綴。數(shù)碼取值為07。八進(jìn)制數(shù)通常是無(wú)符號(hào)數(shù)。 以下各數(shù)是合法的八進(jìn)制數(shù): 015(十進(jìn)制為13)0101(十進(jìn)制為65)0177777(十進(jìn)制為65535) 以下各數(shù)不是合法的八進(jìn)制數(shù):

23、 256(無(wú)前綴0) 03A2(包含了非八進(jìn)制數(shù)碼)-0127(出現(xiàn)了負(fù)號(hào)) 2.十六進(jìn)制整常數(shù) 十六進(jìn)制整常數(shù)的前綴為0X或0 x。其數(shù)碼取值為09,AF或af。 以下各數(shù)是合法的十六進(jìn)制整常數(shù): 0X2A(十進(jìn)制為42)0XA0 (十進(jìn)制為160)0XFFFF (十進(jìn)制為65535) 以下各數(shù)不是合法的十六進(jìn)制整常數(shù): 5A (無(wú)前綴0X)0X3H (含有非十六進(jìn)制數(shù)碼) 3.十進(jìn)制整常數(shù) 十進(jìn)制整常數(shù)沒(méi)有前綴。其數(shù)碼為09。 以下各數(shù)是合法的十進(jìn)制整常數(shù): 237 -568 65535 1627 以下各數(shù)不是合法的十進(jìn)制整常數(shù): 023 (不能有前導(dǎo)0)23D (含有非十進(jìn)制數(shù)碼) 在程

24、序中是根據(jù)前綴來(lái)區(qū)分各種進(jìn)制數(shù)的。因此在書寫常數(shù)時(shí)不要把前綴弄錯(cuò)呵斥結(jié)果不正確。4.整型常數(shù)的后綴在16位字長(zhǎng)的機(jī)器上,根本整型的長(zhǎng)度也為16位,因此表示的數(shù)的范圍也是有限定的。十進(jìn)制無(wú)符號(hào)整常數(shù)的范圍為065535,有符號(hào)數(shù)為-32768+32767。八進(jìn)制無(wú)符號(hào)數(shù)的表示范圍為00177777。十六進(jìn)制無(wú)符號(hào)數(shù)的表示范圍為0X00XFFFF或0 x00 xFFFF。假設(shè)運(yùn)用的數(shù)超越了上述范圍,就必需用長(zhǎng)整型數(shù)來(lái)表示。長(zhǎng)整型數(shù)是用后綴“L或“l(fā)來(lái)表示的。例如: 十進(jìn)制長(zhǎng)整常數(shù) 158L (十進(jìn)制為158) 358000L (十進(jìn)制為-358000) 八進(jìn)制長(zhǎng)整常數(shù) 012L (十進(jìn)制為10)

25、077L (十進(jìn)制為63)0200000L (十進(jìn)制為65536) 十六進(jìn)制長(zhǎng)整常數(shù) 0X15L (十進(jìn)制為21) 0XA5L (十進(jìn)制為165)0X10000L (十進(jìn)制為65536) 長(zhǎng)整數(shù)158L和根本整常數(shù)158 在數(shù)值上并無(wú)區(qū)別。但對(duì)158L,由于是長(zhǎng)整型量,編譯系統(tǒng)將為它分配4個(gè)字節(jié)存儲(chǔ)空間。而對(duì)158,由于是根本整型,只分配2 個(gè)字節(jié)的存儲(chǔ)空間。因此在運(yùn)算和輸出格式上要予以留意,防止出錯(cuò)。無(wú)符號(hào)數(shù)也可用后綴表示,整型常數(shù)的無(wú)符號(hào)數(shù)的后綴為“U或“u。例如: 358u,0 x38Au,235Lu 均為無(wú)符號(hào)數(shù)。前綴,后綴可同時(shí)運(yùn)用以表示各種類型的數(shù)。如0XA5Lu表示十六進(jìn)制無(wú)符號(hào)

26、長(zhǎng)整數(shù)A5,其十進(jìn)制為165。整型變量 整型變量可分為以下幾類: 1.根本型 類型闡明符為int,在內(nèi)存中占2個(gè)字節(jié),其取值為根本整常數(shù)。 2.短整量 類型闡明符為short int或shortC110F1。所占字節(jié)和取值范圍均與根本型一樣。 3.長(zhǎng)整型 類型闡明符為long int或long ,在內(nèi)存中占4個(gè)字節(jié),其取值為長(zhǎng)整常數(shù)。 4.無(wú)符號(hào)型 類型闡明符為unsigned。 無(wú)符號(hào)型又可與上述三種類型匹配而構(gòu)成: (1)無(wú)符號(hào)根本型 類型闡明符為unsigned int或unsigned。 (2)無(wú)符號(hào)短整型 類型闡明符為unsigned short (3)無(wú)符號(hào)長(zhǎng)整型 類型闡明符為un

27、signed long 各種無(wú)符號(hào)類型量所占的內(nèi)存空間字節(jié)數(shù)與相應(yīng)的有符號(hào)類型量一樣。但由于省去了符號(hào)位,故不能表示負(fù)數(shù)。 下表列出了Turbo C中各類整型量所分配的內(nèi)存字節(jié)數(shù)及數(shù)的表示范圍。 類型闡明符數(shù)的范圍 分配字節(jié)數(shù) int -3276832767 short int -3276832767 signed int -3276832767 unsigned int 065535 long int -21474836482147483647 unsigned long 04294967295 整型變量的闡明 變量闡明的普通方式為: 類型闡明符 變量名標(biāo)識(shí)符,變量名標(biāo)識(shí)符,.; 例如: i

28、nt a,b,c; (a,b,c為整型變量) long x,y; (x,y為長(zhǎng)整型變量) unsigned p,q; (p,q為無(wú)符號(hào)整型變量) 在書寫變量闡明時(shí),應(yīng)留意以下幾點(diǎn): 1.允許在一個(gè)類型闡明符后,闡明多個(gè)一樣類型的變量。各變量名之間用逗號(hào)間隔。類型闡明符與變量名之間至少用一個(gè)空格間隔。 2.最后一個(gè)變量名之后必需以“;號(hào)結(jié)尾。 3.變量闡明必需放在變量運(yùn)用之前。普通放在函數(shù)體的開(kāi)頭部分。 Practice /1int a,b; short int c; short d=100; a=d-20; b=a+d; c=a+b+d; d=d-a+c-b;Vtable a,2,0 b,2,

29、0 c,2,0 d,2,100 of Vtable Vupdate 1,0;2,0 3,0 4,100 1,80 2,180 3,360 4,200 of Vupdate of Practice Practice /2int a=5; int b=9; long int c; long d; c=a+b-7; d=a*b*c; c=d*d*d; a=c-d;Vtable a,2,5 b,2,9 c,4,0 d,4,0 of Vtable Vupdate 1,5 2,9 3,0 4,0 3,7 4,315 3,31255875 1,-5112 of Vupdate of Practice Pra

30、ctice /3int a=6,b=19; unsigned int c; int d; c=a-b+7; d=b*c; a=b+c+d; b=-a;Vtable a,2,6 b,2,19 c,2,0 d,2,0 of Vtable Vupdate 1,6;2,19 3,0 4,0 3,65530 4,-114 1,-101 2,101 of Vupdate of Practice void main() long x,y; int a,b,c,d; x=5; y=6; a=7; b=8; c=x+a; d=y+b; printf(c=x+a=%d,d=y+b=%dn,c,d); 將main闡

31、明為前往void,即不前往任何類型的值 x,y被定義為long型 a,b,c,d被定義為int型 5-x 6-y 7-a 8-b x+a-c y+b-d 顯示程序運(yùn)轉(zhuǎn)結(jié)果 of long x,y; int a,b,c,d; c=x+a; d=y+b; 從程序中可以看到:x, y是長(zhǎng)整型變量,a, b是根本整型變量。它們之間允許進(jìn)展運(yùn)算,運(yùn)算結(jié)果為長(zhǎng)整型。但c,d被定義為根本整型,因此最后結(jié)果為根本整型。本例闡明,不同類型的量可以參與運(yùn)算并相互賦值。其中的類型轉(zhuǎn)換是由編譯系統(tǒng)自動(dòng)完成的。有關(guān)類型轉(zhuǎn)換的規(guī)那么將在以后引見(jiàn)。實(shí)型量 實(shí)型常量 實(shí)型也稱為浮點(diǎn)型。實(shí)型常量也稱為實(shí)數(shù)或者浮點(diǎn)數(shù)。在言語(yǔ)中,

32、實(shí)數(shù)只采用十進(jìn)制。它有二種方式: 十進(jìn)制數(shù)方式指數(shù)方式 1.十進(jìn)制數(shù)方式 由數(shù)碼0 9和小數(shù)點(diǎn)組成。例如:0.0,.25,5.789,0.13,5.0,300.,-267.8230等均為合法的實(shí)數(shù)。 2.指數(shù)方式 由十進(jìn)制數(shù),加階碼標(biāo)志“e或“E以及階碼只能為整數(shù),可以帶符號(hào)組成。其普通方式為a E n a為十進(jìn)制數(shù),n為十進(jìn)制整數(shù)其值為 a*10,n如: 2.1E5 (等于2.1*10,5), 3.7E-2 (等于3.7*10,)-2*)0.5E7 (等于0.5*10,7), -2.8E-2 (等于-2.8*10,)-2*)以下不是合法的實(shí)數(shù) 345 (無(wú)小數(shù)點(diǎn))E7 (階碼標(biāo)志E之前無(wú)數(shù)字

33、) -5 (無(wú)階碼標(biāo)志)53.-E3 (負(fù)號(hào)位置不對(duì))2.7E (無(wú)階碼) 規(guī)范允許浮點(diǎn)數(shù)運(yùn)用后綴。后綴為“f或“F即表示該數(shù)為浮點(diǎn)數(shù)。如356f和356.是等價(jià)的。例2.2闡明了這種情況: void main() printf(%fn%fn,356.,356f); void 指明main不前往任何值利用printf顯示結(jié)果終了 實(shí)型變量 實(shí)型變量分為兩類:?jiǎn)尉刃秃碗p精度型, 其類型闡明符為float 單精度闡明符,double 雙精度闡明符。在Turbo C中單精度型占4個(gè)字節(jié)32位內(nèi)存空間,其數(shù)值范圍為3.4E-383.4E+38,只能提供七位有效數(shù)字。雙精度型占8 個(gè)字節(jié)64位內(nèi)存空間

34、,其數(shù)值范圍為1.7E-3081.7E+308,可提供16位有效數(shù)字。 實(shí)型變量闡明的格式和書寫規(guī)那么與整型一樣。 例如: float x,y; (x,y為單精度實(shí)型量) double a,b,c; (a,b,c為雙精度實(shí)型量) 實(shí)型常數(shù)不分單、雙精度,都按雙精度double型處置。 void main() float a; double b; a=33333.33333; b=33333.33333333333333; printf(%fn%fn,a,b); 此程序闡明float、double的不同 a b a33333.33333 ba,6-b,7-c 調(diào)用printf顯示程序運(yùn)轉(zhuǎn)結(jié)果 p

35、rintf(%dnt%d %dn %d %dtb%dn,a,b,c,a,b,c); 程序在第一列輸出a值5之后就是“n,故回車換行;接著又是“t,于是跳到下一制表位置設(shè)制表位置間隔為8,再輸出b值6;空二格再輸出c 值7后又是n,因此再回車換行;再空二格之后又輸出a值5;再空三格又輸出b的值6;再次后t跳到下一制表位置與上一行的6 對(duì)齊,但下一本義字符“b又使退回一格,故緊挨著6再輸出c值7。 字符變量 字符變量的取值是字符常量,即單個(gè)字符。字符變量的類型闡明符是char。字符變量類型闡明的格式和書寫規(guī)那么都與整型變量一樣。 例如: char a,b; 每個(gè)字符變量被分配一個(gè)字節(jié)的內(nèi)存空間,因

36、此只能存放一個(gè)字符。字符值是以ASCII碼的方式存放在變量的內(nèi)存單元之中的。如x的 十進(jìn)制ASCII碼是120,y的十進(jìn)制ASCII碼是121。對(duì)字符變量a,b賦予x和y值: a=x;b=y;實(shí)踐上是在a,b兩個(gè)單元內(nèi)存放120和121的二進(jìn)制代碼: a0 1 1 1 1 0 0 0 b0 1 1 1 1 0 0 1 所以也可以把它們看成是整型量。 言語(yǔ)允許對(duì)整型變量賦以字符值,也允許對(duì)字符變量賦以整型值。在輸出時(shí), 允許把字符變量按整型量輸出,也允許把整型量按字符量輸出。 整型量為二字節(jié)量,字符量為單字節(jié)量,當(dāng)整型量按字符型量處置時(shí), 只需低八位字節(jié)參與處置。 main() char a,b

37、; a=120; b=121; printf(%c,%cn%d,%dn,a,b,a,b); a b a - 120 b rPI*r*r-s 顯示程序結(jié)果 float s,r;r=5;s=PI*r*r; 本程序在主函數(shù)之前由宏定義命令定義PI 為3.14159,在程序中即以該值替代PI 。s=PI*r*r等效于s=3.14159*r*r。應(yīng)該留意的是,符號(hào)常量不是變量,它所代表的值在整個(gè)作用域內(nèi)不能再改動(dòng)。也就是說(shuō),在程序中,不能再用賦值語(yǔ)句對(duì)它重新賦值。 變量的初值和類型轉(zhuǎn)換 變量賦初值 在程序中經(jīng)常需求對(duì)變量賦初值,以便運(yùn)用變量。言語(yǔ)程序中可有多種方法,在定義時(shí)賦以初值的方法,這種方法稱為初

38、始化。在變量闡明中賦初值的普通方式為: 類型闡明符 變量1= 值1,變量2= 值2,; 例如: int a=b=c=5; float x=3.2,y=3f,z=0.75; char ch1=K,ch2=P; 應(yīng)留意,在闡明中不允許延續(xù)賦值,如a=b=c=5是不合法的。 void main() int a=3,b,c=5; b=a+c; printf(a=%d,b=%d,c=%dn,a,b,c); a3,b-0,c5 b-a+c 顯示程序運(yùn)轉(zhuǎn)結(jié)果 變量類型的轉(zhuǎn)換 變量的數(shù)據(jù)類型是可以轉(zhuǎn)換的。轉(zhuǎn)換的方法有兩種, 一種是自動(dòng)轉(zhuǎn)換,一種是強(qiáng)迫轉(zhuǎn)換。 自動(dòng)轉(zhuǎn)換 自動(dòng)轉(zhuǎn)換發(fā)生在不同數(shù)據(jù)類型的量混合運(yùn)算時(shí),

39、由編譯系統(tǒng)自動(dòng)完成。自動(dòng)轉(zhuǎn)換遵照以下規(guī)那么: 1.假設(shè)參與運(yùn)算量的類型不同,那么先轉(zhuǎn)換成同一類型,然后進(jìn)展運(yùn)算。 2.轉(zhuǎn)換按數(shù)據(jù)長(zhǎng)度添加的方向進(jìn)展,以保證精度不降低。如int型和long型運(yùn)算時(shí),先把int量轉(zhuǎn)成long型后再進(jìn)展運(yùn)算。 3.一切的浮點(diǎn)運(yùn)算都是以雙精度進(jìn)展的,即使僅含float單精度量運(yùn)算的表達(dá)式,也要先轉(zhuǎn)換成double型,再作運(yùn)算。 4.char型和short型參與運(yùn)算時(shí),必需先轉(zhuǎn)換成int型。 5.在賦值運(yùn)算中,賦值號(hào)兩邊量的數(shù)據(jù)類型不同時(shí), 賦值號(hào)右邊量的類型將轉(zhuǎn)換為左邊量的類型。 假設(shè)右邊量的數(shù)據(jù)類型長(zhǎng)度左邊長(zhǎng)時(shí),將喪失一部分?jǐn)?shù)據(jù),這樣會(huì)降低精度, 喪失的部分按四舍五

40、入向前舍入。圖21表示了類型自動(dòng)轉(zhuǎn)換的規(guī)那么。 void main() float PI=3.14159; int s,r=5; s=r*r*PI; printf(s=%dn,s); PI-3.14159 s-0,r-5 s-r*r*PI 顯示程序運(yùn)轉(zhuǎn)結(jié)果 float PI=3.14159; int s,r=5; s=r*r*PI; 本例程序中,PI為實(shí)型;s,r為整型。在執(zhí)行s=r*r*PI語(yǔ)句時(shí),r和PI都轉(zhuǎn)換成double型計(jì)算,結(jié)果也為double型。但由于s為整型,故賦值結(jié)果仍為整型,舍去了小數(shù)部分。 強(qiáng)迫類型轉(zhuǎn)換 強(qiáng)迫類型轉(zhuǎn)換是經(jīng)過(guò)類型轉(zhuǎn)換運(yùn)算來(lái)實(shí)現(xiàn)的。其普通方式為: (類型闡明符

41、) (表達(dá)式) 其功能是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)迫轉(zhuǎn)換成類型闡明符所表示的類型。例如: (float) a 把a(bǔ)轉(zhuǎn)換為實(shí)型(int)(x+y) 把x+y的結(jié)果轉(zhuǎn)換為整型在運(yùn)用強(qiáng)迫轉(zhuǎn)換時(shí)應(yīng)留意以下問(wèn)題: 1.類型闡明符和表達(dá)式都必需加括號(hào)(單個(gè)變量可以不加括號(hào)),如把(int)(x+y)寫成(int)x+y那么成了把x轉(zhuǎn)換成int型之后再與y相加了。 2.無(wú)論是強(qiáng)迫轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換,都只是為了本次運(yùn)算的需求而對(duì)變量的數(shù)據(jù)長(zhǎng)度進(jìn)展的暫時(shí)性轉(zhuǎn)換,而不改動(dòng)數(shù)聽(tīng)闡明時(shí)對(duì)該變量定義的類型。 main() float f=5.75; printf(int)f=%d,f=%fn,(int)f,f); f)、小于(

42、=)、小于等于(=)和不等于(!=)六種。 3.邏輯運(yùn)算符 用于邏輯運(yùn)算。包括與(&)、或(|)、非(!)三種。 4.位操作運(yùn)算符 參與運(yùn)算的量,按二進(jìn)制位進(jìn)展運(yùn)算。包括位與(&)、位或(|)、位非()、位異或()、左移()六種。 5.賦值運(yùn)算符 用于賦值運(yùn)算,分為簡(jiǎn)單賦值(=)、復(fù)合算術(shù)賦值(+=,-=,*=,/=,%=)和復(fù)合位運(yùn)算賦值(&=,|=,=,=,=)三類共十一種。 6.條件運(yùn)算符 這是一個(gè)三目運(yùn)算符,用于條件求值(?:)。 7.逗號(hào)運(yùn)算符 用于把假設(shè)干表達(dá)式組合成一個(gè)表達(dá)式(,)。 8.指針運(yùn)算符 用于取內(nèi)容(*)和取地址(&)二種運(yùn)算。 9.求字節(jié)數(shù)運(yùn)算符 用于計(jì)算數(shù)據(jù)類型所

43、占的字節(jié)數(shù)(sizeof)。 10.特殊運(yùn)算符 有括號(hào)(),下標(biāo),成員(,.)等幾種。 優(yōu)先級(jí)和結(jié)合性 言語(yǔ)中,運(yùn)算符的運(yùn)算優(yōu)先級(jí)共分為15級(jí)。1級(jí)最高,15級(jí)最低。在表達(dá)式中,優(yōu)先級(jí)較高的先于優(yōu)先級(jí)較低的進(jìn)展運(yùn)算。 而在一個(gè)運(yùn)算量?jī)蓚?cè)的運(yùn)算符優(yōu)先級(jí)一樣時(shí), 那么按運(yùn)算符的結(jié)合性所規(guī)定的結(jié)合方向處置。 言語(yǔ)中各運(yùn)算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。例如算術(shù)運(yùn)算符的結(jié)合性是自左至右,即先左后右。如有表達(dá)式x-y+z那么y應(yīng)先與“-號(hào)結(jié)合, 執(zhí)行x-y運(yùn)算,然后再執(zhí)行+z的運(yùn)算。這種自左至右的結(jié)合方向就稱為“左結(jié)合性。而自右至左的結(jié)合方向稱為“右結(jié)合性。 最典型的右

44、結(jié)合性運(yùn)算符是賦值運(yùn)算符。如x=y=z,由于“=的右結(jié)合性,應(yīng)先執(zhí)行y=z再執(zhí)行x=(y=z)運(yùn)算。 言語(yǔ)運(yùn)算符中有不少為右結(jié)合性,應(yīng)留意區(qū)別,以防止了解錯(cuò)誤。 算術(shù)運(yùn)算符和算術(shù)表達(dá)式根本的算術(shù)運(yùn)算符 1.加法運(yùn)算符“+加法運(yùn)算符為雙目運(yùn)算符,即應(yīng)有兩個(gè)量參與加法運(yùn)算。如a+b,4+8等。具有右結(jié)合性。 2.減法運(yùn)算符“-減法運(yùn)算符為雙目運(yùn)算符。但“-也可作負(fù)值運(yùn)算符,此時(shí)為單目運(yùn)算,如-x,-5等具有左結(jié)合性。 3.乘法運(yùn)算符“*雙目運(yùn)算,具有左結(jié)合性。 4.除法運(yùn)算符“/雙目運(yùn)算具有左結(jié)合性。參與運(yùn)算量均為整型時(shí), 結(jié)果也為整型,舍去小數(shù)。假設(shè)運(yùn)算量中有一個(gè)是實(shí)型,那么結(jié)果為雙精度實(shí)型。

45、void main() printf(nn%d,%dn,20/7,-20/7); printf(%f,%fn,20.0/7,-20.0/7); 雙目運(yùn)算具有左結(jié)合性。參與運(yùn)算量均為整型時(shí), 結(jié)果也為整型,舍去小數(shù)。假設(shè)運(yùn)算量中有一個(gè)是實(shí)型,那么結(jié)果為雙精度實(shí)型。 printf(nn%d,%dn,20/7,-20/7); printf(%f,%fn,20.0/7,-20.0/7); 本例中,20/7,-20/7的結(jié)果均為整型,小數(shù)全部舍去。而20.0/7和-20.0/7由于有實(shí)數(shù)參與運(yùn)算,因此結(jié)果也為實(shí)型。 5.求余運(yùn)算符(模運(yùn)算符)“%雙目運(yùn)算,具有左結(jié)合性。要求參與運(yùn)算的量均為整型。 求余運(yùn)

46、算的結(jié)果等于兩數(shù)相除后的余數(shù)。 void main() printf(%dn,100%3); 雙目運(yùn)算,具有左結(jié)合性。求余運(yùn)算符% 要求參與運(yùn)算的量均為整型。本例輸出100除以3所得的余數(shù)1。 自增,自減運(yùn)算符 自增1運(yùn)算符記為“+,其功能是使變量的值自增1。自減1運(yùn)算符記為“-,其功能是使變量值自減1。自增1,自減1運(yùn)算符均為單目運(yùn)算,都具有右結(jié)合性。可有以下幾種方式: +i i自增1后再參與其它運(yùn)算。-i i自減1后再參與其它運(yùn)算。 i+ i參與運(yùn)算后,i的值再自增1。 i- i參與運(yùn)算后,i的值再自減1。 在了解和運(yùn)用上容易出錯(cuò)的是i+和i-。 特別是當(dāng)它們出在較復(fù)雜的表達(dá)式或語(yǔ)句中時(shí),

47、經(jīng)常難于弄清,因此應(yīng)仔細(xì)分析。 void main() int i=8; printf(%dn,+i); printf(%dn,-i); printf(%dn,i+); printf(%dn,i-); printf(%dn,-i+); printf(%dn,-i-); i-8 i-i+1 i-i-1 i-i+1 i-i-1 i-i+1 i-i-1 int i=8; printf(%dn,+i); printf(%dn,-i); printf(%dn,i+); printf(%dn,i-); printf(%dn,-i+); printf(%dn,-i-); i的初值為8 第2行i加1后輸出故為

48、9; 第3行減1后輸出故為8; 第4行輸出i為8之后再加1(為9); 第5行輸出i為9之后再減1(為8) ; 第6行輸出-8之后再加1(為9); 第7行輸出-9之后再減1(為8) void main() int i=5,j=5,p,q; p=(i+)+(i+)+(i+); q=(+j)+(+j)+(+j); printf(%d,%d,%d,%d,p,q,i,j); i-5,j-5,p-0,qp,i+1-i,i+1-i,i+1-i j+1-j,j+1-j,j+1-j,j+j+j-q int i=5,j=5,p,q; p=(i+)+(i+)+(i+); q=(+j)+(+j)+(+j); 這個(gè)程序

49、中,對(duì)P=(i+)+(i+)+(i+)應(yīng)了解為三個(gè)i相加,故P值為15。然后i再自增1三次相當(dāng)于加3故i的最后值為8。而對(duì)于q 的值那么不然,q=(+j)+(+j)+(+j)應(yīng)了解為q先自增1,再參與運(yùn)算,由于q自增1三次后值為8,三個(gè)8相加的和為24,j的最后值仍為8。算術(shù)表達(dá)式表達(dá)式是由常量、變量、函數(shù)和運(yùn)算符組合起來(lái)的式子。 一個(gè)表達(dá)式有一個(gè)值及其類型, 它們等于計(jì)算表達(dá)式所得結(jié)果的值和類型。表達(dá)式求值按運(yùn)算符的優(yōu)先級(jí)和結(jié)合性規(guī)定的順序進(jìn)展。 單個(gè)的常量、變量、函數(shù)可以看作是表達(dá)式的特例。算術(shù)表達(dá)式 是由算術(shù)運(yùn)算符和括號(hào)銜接起來(lái)的式子, 以下是算術(shù)表達(dá)式的例子: a+b (a*2)c(x

50、+r)*8-(a+b)7+isin(x)+sin(y) (+i)-(j+)+(k-) 賦值運(yùn)算符和賦值表達(dá)式 簡(jiǎn)單賦值運(yùn)算符和表達(dá)式,簡(jiǎn)單賦值運(yùn)算符記為“=。由“= 銜接的式子稱為賦值表達(dá)式。其普通方式為: 變量=表達(dá)式 例如: x=a+b w=sin(a)+sin(b) y=i+-j 賦值表達(dá)式的功能是計(jì)算表達(dá)式的值再賦予左邊的變量。賦值運(yùn)算符具有右結(jié)合性。因此 a=b=c=5 可了解為 a=(b=(c=5) 在其它高級(jí)言語(yǔ)中,賦值構(gòu)成了一個(gè)語(yǔ)句,稱為賦值語(yǔ)句。 而在C中,把“=定義為運(yùn)算符,從而組成賦值表達(dá)式。 凡是表達(dá)式可以出現(xiàn)的地方均可出現(xiàn)賦值表達(dá)式。例如,式子x=(a=5)+(b=8

51、)是合法的。它的意義是把5賦予a,8賦予b,再把a(bǔ),b相加,和賦予x ,故x應(yīng)等于13。 在言語(yǔ)中也可以組成賦值語(yǔ)句,按照言語(yǔ)規(guī)定, 任何表達(dá)式在其未尾加上分號(hào)就構(gòu)成為語(yǔ)句。因此如x=8;a=b=c=5;都是賦值語(yǔ)句,在前面各例中我們已大量運(yùn)用過(guò)了。假設(shè)賦值運(yùn)算符兩邊的數(shù)據(jù)類型不一樣, 系統(tǒng)將自動(dòng)進(jìn)展類型轉(zhuǎn)換,即把賦值號(hào)右邊的類型換成左邊的類型。詳細(xì)規(guī)定如下: 1.實(shí)型賦予整型,舍去小數(shù)部分。前面的例2.9曾經(jīng)闡明了這種情況。 2.整型賦予實(shí)型,數(shù)值不變,但將以浮點(diǎn)方式存放, 即添加小數(shù)部分(小數(shù)部分的值為0)。 3.字符型賦予整型,由于字符型為一個(gè)字節(jié), 而整型為二個(gè)字節(jié),故將字符的ASCI

52、I碼值放到整型量的低八位中,高八位為0。 4.整型賦予字符型,只把低八位賦予字符量。 void main() int a,b=322; float x,y=8.88; char c1=k,c2; a=y; x=b; a=c1; c2=b; printf(%d,%f,%d,%c,a,x,a,c2); int a,b=322; float x,y=8.88; char c1=k,c2; printf(%d,%f,%d,%c,a=y,x=b,a=c1,c2=b); 本例闡明了上述賦值運(yùn)算中類型轉(zhuǎn)換的規(guī)那么。a為整型,賦予實(shí)型量y值888后只取整數(shù)8。x為實(shí)型,賦予整型量b值322, 后添加了小數(shù)部分

53、。字符型量c1賦予a變?yōu)檎停土縝賦予c2 后取其低八位成為字符型(b的低八位為01000010,即十進(jìn)制66,按ASCII碼對(duì)應(yīng)于字符B)。 復(fù)合賦值符及表達(dá)式 在賦值符“=之前加上其它二目運(yùn)算符可構(gòu)成復(fù)合賦值符。如 +=,-=,*=,=,%=,=,&=,=,|=。 構(gòu)成復(fù)合賦值表達(dá)式的普通方式為: 變量 雙目運(yùn)算符=表達(dá)式 它等效于 變量=變量 運(yùn)算符 表達(dá)式 例如: a+=5 等價(jià)于a=a+5x*=y+7 等價(jià)于x=x*(y+7)r%=p 等價(jià)于r=r%p 復(fù)合賦值符這種寫法,對(duì)初學(xué)者能夠不習(xí)慣, 但非常有利于編譯處置,能提高編譯效率并產(chǎn)生質(zhì)量較高的目的代碼。逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式在

54、 逗號(hào)運(yùn)算符 言語(yǔ)中逗號(hào)“,也是一種運(yùn)算符,稱為逗號(hào)運(yùn)算符。 其功能是把兩個(gè)表達(dá)式銜接起來(lái)組成一個(gè)表達(dá)式, 稱為逗號(hào)表達(dá)式。 其普通方式為: 表達(dá)式1,表達(dá)式2 其求值過(guò)程是分別求兩個(gè)表達(dá)式的值,并以表達(dá)式2的值作為整個(gè)逗號(hào)表達(dá)式的值。 void main() int a=2,b=4,c=6,x,y; x=a+b,y=b+c; printf(y=%d,x=%d,y,x); a-2,b-4,c-6,x-0,y-0 x-a+b,y0) z=x; 語(yǔ)句的功能是,假設(shè)表達(dá)式x=y+5大于0那么z=x。下述語(yǔ)句是非法的: if(x=y+5;)0) z=x; 由于=y+5;是語(yǔ)句,不能出如今表達(dá)式中。數(shù)據(jù)

55、輸出語(yǔ)句 本小節(jié)引見(jiàn)的是向規(guī)范輸出設(shè)備顯示器輸出數(shù)據(jù)的語(yǔ)句。在C言語(yǔ)中,一切的數(shù)據(jù)輸入輸出都是由庫(kù)函數(shù)完成的。 因此都是函數(shù)語(yǔ)句。本小節(jié)先引見(jiàn)printf函數(shù)和putChar函數(shù)。printf函數(shù)printf函數(shù)稱為格式輸出函數(shù),其關(guān)鍵字最末一個(gè)字母f即為“格式(format)之意。其功能是按用戶指定的格式, 把指定的數(shù)據(jù)顯示到顯示器屏幕上。在前面的例題中我們已多次運(yùn)用過(guò)這個(gè)函數(shù)。 一、printf函數(shù)調(diào)用的普通方式 printf函數(shù)是一個(gè)規(guī)范庫(kù)函數(shù),它的函數(shù)原型在頭文件“stdio.h中。但作為一個(gè)特例,不要求在運(yùn)用 printf 函數(shù)之前必需包含stdio.h文件。printf函數(shù)調(diào)用的普

56、通方式為: printf(“格式控制字符串,輸出表列)其中格式控制字符串用于指定輸出格式。 格式控制串可由格式字符串和非格式字符串兩種組成。格式字符串是以%開(kāi)頭的字符串,在%后面跟有各種格式字符,以闡明輸出數(shù)據(jù)的類型、方式、長(zhǎng)度、小數(shù)位數(shù)等。如“%d表示按十進(jìn)制整型輸出,“%ld表示按十進(jìn)制長(zhǎng)整型輸出,“%C表示按字符型輸出等。后面將專門給予討論。 非格式字符串在輸出時(shí)原樣照印,在顯示中起提示作用。 輸出表列中給出了各個(gè)輸出項(xiàng), 要求格式字符串和各輸出項(xiàng)在數(shù)量和類型上應(yīng)該一一對(duì)應(yīng)。 void main() int a=88,b=89; printf(%d %dn,a,b); printf(%d

57、,%dn,a,b); printf(%C,%Cn,a,b); printf(a=%d,b=%d,a,b); a-8,b-89 printf(%d %dn,a,b); printf(%d,%dn,a,b); printf(%C,%Cn,a,b); printf(a=%d,b=%d,a,b); 本例中四次輸出了a,b的值,但由于格式控制串不同,輸出的結(jié)果也不一樣。第四行的輸出語(yǔ)句格式控制串中,兩格式串%d 之間加了一個(gè)空格(非格式字符),所以輸出的a,b值之間有一個(gè)空格。第五行的printf語(yǔ)句格式控制串中參與的是非格式字符逗號(hào), 因此輸出的a,b值之間加了一個(gè)逗號(hào)。第六行的格式串要求按字符型輸出

58、 a,b值。第七行中為了提示輸出結(jié)果又添加了非格式字符串。 二、格式字符串 在Turbo C中格式字符串的普通方式為: 標(biāo)志輸出最小寬度.精度長(zhǎng)度類型 其中方括號(hào)中的項(xiàng)為可選項(xiàng)。各項(xiàng)的意義引見(jiàn)如下: 1.類型類型字符用以表示輸出數(shù)據(jù)的類型,其格式符和意義下表所示: 表示輸出類型的格式字符 格式字符意義 d 以十進(jìn)制方式輸出帶符號(hào)整數(shù)(正數(shù)不輸出符號(hào)) o 以八進(jìn)制方式輸出無(wú)符號(hào)整數(shù)(不輸出前綴O) x 以十六進(jìn)制方式輸出無(wú)符號(hào)整數(shù)(不輸出前綴OX) u 以十進(jìn)制方式輸出無(wú)符號(hào)整數(shù) f 以小數(shù)方式輸出單、雙精度實(shí)數(shù) e 以指數(shù)方式輸出單、雙精度實(shí)數(shù) g 以%f%e中較短的輸出寬度輸出單、雙精度實(shí)

59、數(shù) C 輸出單個(gè)字符 s 輸出字符串 2.標(biāo)志 標(biāo)志字符為-、+、#、空格四種,其意義下表所示: 標(biāo)志格式字符 標(biāo) 志 意 義 - 結(jié)果左對(duì)齊,右邊填空格 + 輸出符號(hào)(正號(hào)或負(fù)號(hào))空格輸出值為正時(shí)冠以空格,為負(fù)時(shí)冠以負(fù)號(hào) # 對(duì)C,s,d,u類無(wú)影響;對(duì)o類, 在輸出時(shí)加前 綴o 對(duì)x類,在輸出時(shí)加前綴0 x;對(duì)e,g,f 類當(dāng)結(jié)果有小數(shù)時(shí)才給出小數(shù)點(diǎn) 3.輸出最小寬度 用十進(jìn)制整數(shù)來(lái)表示輸出的最少位數(shù)。 假設(shè)實(shí)踐位數(shù)多于定義的寬度,那么按實(shí)踐位數(shù)輸出, 假設(shè)實(shí)踐位數(shù)少于定義的寬度那么補(bǔ)以空格或0。 4.精度 精度格式符以“.開(kāi)頭,后跟十進(jìn)制整數(shù)。本項(xiàng)的意義是:假設(shè)輸出數(shù)字,那么表示小數(shù)的位

60、數(shù);假設(shè)輸出的是字符, 那么表示輸出字符的個(gè)數(shù);假設(shè)實(shí)踐位數(shù)大于所定義的精度數(shù),那么截去超越的部分。 5.長(zhǎng)度 長(zhǎng)度格式符為h,l兩種,h表示按短整型量輸出,l表示按長(zhǎng)整型量輸出。 void main() int a=15; float b=.3576278; double C=35648256.3645687; Char d=p; printf(a=%d,%5d,%o,%xn,a,a,a,a); printf(b=%f,%lf,%5.4lf,%en,b,b,b,b); printf(C=%lf,%f,%8.4lfn,C,C,C); printf(d=%C,%8Cn,d,d); a-15 b-

溫馨提示

  • 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)論