第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式HH5_第1頁
第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式HH5_第2頁
第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式HH5_第3頁
第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式HH5_第4頁
第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式HH5_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、高級(jí)語言程序設(shè)計(jì)高級(jí)語言程序設(shè)計(jì) (C語言描述)語言描述)陸黎明陸黎明 朱媛媛朱媛媛 蔣蔣 培培 編著編著科學(xué)出版社科學(xué)出版社 2013.12 數(shù)據(jù)是程序處理的基本對(duì)象數(shù)據(jù)是程序處理的基本對(duì)象。在。在數(shù)學(xué)中數(shù)學(xué)中,數(shù)據(jù)是不分類型的,數(shù)據(jù)是不分類型的,因?yàn)閿?shù)學(xué)中的數(shù)和對(duì)數(shù)的運(yùn)算都是抽象的。而在因?yàn)閿?shù)學(xué)中的數(shù)和對(duì)數(shù)的運(yùn)算都是抽象的。而在計(jì)算機(jī)中計(jì)算機(jī)中,數(shù)據(jù)是存放在存儲(chǔ)器中的,通常占用若干個(gè)字節(jié),并采用一數(shù)據(jù)是存放在存儲(chǔ)器中的,通常占用若干個(gè)字節(jié),并采用一定的存儲(chǔ)形式。定的存儲(chǔ)形式。數(shù)據(jù)占用的字節(jié)數(shù)以及它的存儲(chǔ)形式?jīng)Q定了數(shù)據(jù)占用的字節(jié)數(shù)以及它的存儲(chǔ)形式?jīng)Q定了數(shù)據(jù)的范圍和精度數(shù)據(jù)的范圍和精度,因此,

2、計(jì)算機(jī)中數(shù)據(jù)的范圍和精度都有,因此,計(jì)算機(jī)中數(shù)據(jù)的范圍和精度都有限的。限的。 所謂數(shù)據(jù)類型就是指數(shù)據(jù)在計(jì)算機(jī)內(nèi)的表現(xiàn)形式,包括分配所謂數(shù)據(jù)類型就是指數(shù)據(jù)在計(jì)算機(jī)內(nèi)的表現(xiàn)形式,包括分配的字節(jié)數(shù)、存儲(chǔ)形式以及允許的操作的字節(jié)數(shù)、存儲(chǔ)形式以及允許的操作。一般來說,不同數(shù)據(jù)。一般來說,不同數(shù)據(jù)類型的數(shù)據(jù)所分配的字節(jié)數(shù)和存儲(chǔ)形式是不同的,所以,類型的數(shù)據(jù)所分配的字節(jié)數(shù)和存儲(chǔ)形式是不同的,所以,不不同數(shù)據(jù)類型數(shù)據(jù)的取值范圍、精度以及允許的操作也不同同數(shù)據(jù)類型數(shù)據(jù)的取值范圍、精度以及允許的操作也不同。在在C語言中,語言中,數(shù)據(jù)類型可分為數(shù)據(jù)類型可分為基本類型、構(gòu)造類型、指針類基本類型、構(gòu)造類型、指針類型和空

3、類型型和空類型四大類四大類。 32.1.1 常量常量 在程序執(zhí)行過程中,在程序執(zhí)行過程中,其值不能被改變的量稱為常量其值不能被改變的量稱為常量。常量按。常量按數(shù)據(jù)本身的類型可分為整型常量、實(shí)型常量、字符型常量和數(shù)據(jù)本身的類型可分為整型常量、實(shí)型常量、字符型常量和字符串常量。字符串常量。常量的類型一般可由字面形式進(jìn)行判斷常量的類型一般可由字面形式進(jìn)行判斷。例如:。例如:(1) 整型常量,如整型常量,如120、-3等。等。(2) 實(shí)型常量,如實(shí)型常量,如24.6、-1.35等。等。(3) 字符型常量,如字符型常量,如a、?等。等。(4) 字符串常量,如字符串常量,如C Language等。等。 上

4、述常量也稱為上述常量也稱為數(shù)值常量數(shù)值常量,在程序中,數(shù)值常量可以不經(jīng)定,在程序中,數(shù)值常量可以不經(jīng)定義而直接使用。義而直接使用。C語言中,也可以用一個(gè)標(biāo)識(shí)符來表示一個(gè)語言中,也可以用一個(gè)標(biāo)識(shí)符來表示一個(gè)常量,稱之為常量,稱之為符號(hào)常量符號(hào)常量。定義符號(hào)常量的一般形式定義符號(hào)常量的一般形式: #define 標(biāo)識(shí)符標(biāo)識(shí)符 數(shù)值常量數(shù)值常量 42.1.1 常量常量例例2.1 符號(hào)常量的定義和使用示例。符號(hào)常量的定義和使用示例。#include #define PI 3.1416int main() float r; double l,s;printf(輸入圓的半徑輸入圓的半徑:);scanf(%

5、f, &r);l=2.0*PI*r; /* 圓周長圓周長 */s=PI*r*r; /* 圓面積圓面積 */printf(周長周長=%10.4fn面積面積=%10.4fn, l,s);return 0;52.1.1 常量常量 習(xí)慣上,習(xí)慣上,符號(hào)常量名用大寫英文字母符號(hào)常量名用大寫英文字母,變量名用小寫英文字變量名用小寫英文字母母。使用。使用符號(hào)常量有以下好處符號(hào)常量有以下好處:(1) 含義清楚,見名知意。如在上面的程序中,看到含義清楚,見名知意。如在上面的程序中,看到PI就知道它就知道它代表圓周率。因此,定義符號(hào)常量名應(yīng)考慮代表圓周率。因此,定義符號(hào)常量名應(yīng)考慮“見名知意見名知意”。(

6、2) 修改方便,一改全改。例如,上面的程序作如下修改:修改方便,一改全改。例如,上面的程序作如下修改: #define PI 3.1415926 則程序中出現(xiàn)的所有則程序中出現(xiàn)的所有PI都代表都代表3.1415926。 62.1.2 變量變量 在程序執(zhí)行過程中,在程序執(zhí)行過程中,其值可以改變的量稱為變量其值可以改變的量稱為變量。一個(gè)變量。一個(gè)變量有一個(gè)名字(習(xí)慣用小寫英文字母,在命名時(shí)應(yīng)考慮有一個(gè)名字(習(xí)慣用小寫英文字母,在命名時(shí)應(yīng)考慮“見名見名知意知意”的原則),且占用一定的內(nèi)存單元(變量名就代表這的原則),且占用一定的內(nèi)存單元(變量名就代表這個(gè)內(nèi)存單元),該內(nèi)存單元中存放變量的值。個(gè)內(nèi)存單

7、元),該內(nèi)存單元中存放變量的值。變量定義的一變量定義的一般形式為般形式為: 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 變量名標(biāo)識(shí)符,變量名標(biāo)識(shí)符,變量名標(biāo)識(shí)符,變量名標(biāo)識(shí)符, ;例如:例如:int i,j,k; /* i,j,k為整型變量為整型變量 */float x,y; /* x,y為單精度實(shí)型變量為單精度實(shí)型變量 */char c1,c2; /* c1,c2為字符型變量為字符型變量 */72.1.2 變量變量 任何一個(gè)變量都有三個(gè)要素任何一個(gè)變量都有三個(gè)要素,即變量名、變量的數(shù)據(jù)類型和,即變量名、變量的數(shù)據(jù)類型和變量的值。變量名和變量的數(shù)據(jù)類型是在定義時(shí)給定的,不變量的值。變量名和變量的數(shù)據(jù)類型是在定義時(shí)給

8、定的,不能再改變,而變量的值可在程序執(zhí)行過程中改變。能再改變,而變量的值可在程序執(zhí)行過程中改變。 變量定義通常放在函數(shù)體的開始部分,也可以放在函數(shù)的外變量定義通常放在函數(shù)體的開始部分,也可以放在函數(shù)的外部。部。C語言中,變量必須遵循語言中,變量必須遵循“先定義,后使用先定義,后使用”的原則的原則。這樣做的目的是:這樣做的目的是:(1) 保證程序中變量名使用的正確性,便于程序員發(fā)現(xiàn)錯(cuò)誤。保證程序中變量名使用的正確性,便于程序員發(fā)現(xiàn)錯(cuò)誤。(2) 定義時(shí)給定了變量的數(shù)據(jù)類型,編譯時(shí)就能為其分配相應(yīng)的定義時(shí)給定了變量的數(shù)據(jù)類型,編譯時(shí)就能為其分配相應(yīng)的內(nèi)存單元。內(nèi)存單元。(3) 變量的數(shù)據(jù)類型確定后,

9、也就確定了該變量所能進(jìn)行的操作,變量的數(shù)據(jù)類型確定后,也就確定了該變量所能進(jìn)行的操作,編譯時(shí)就能根據(jù)變量的數(shù)據(jù)類型檢查該變量所進(jìn)行的運(yùn)算是編譯時(shí)就能根據(jù)變量的數(shù)據(jù)類型檢查該變量所進(jìn)行的運(yùn)算是否合法。否合法。 82.2.1 整型數(shù)據(jù)整型數(shù)據(jù) 1、整型類型、整型類型 整型類型用來表示數(shù)學(xué)中的整數(shù),各類整型類型數(shù)據(jù)所分配整型類型用來表示數(shù)學(xué)中的整數(shù),各類整型類型數(shù)據(jù)所分配的內(nèi)存字節(jié)數(shù)及數(shù)的表示范圍如表的內(nèi)存字節(jié)數(shù)及數(shù)的表示范圍如表2.1所示。所示。 ANSI C沒有具體規(guī)定各類整型類型數(shù)據(jù)所分配的內(nèi)存字節(jié)數(shù),沒有具體規(guī)定各類整型類型數(shù)據(jù)所分配的內(nèi)存字節(jié)數(shù),這是由各編譯系統(tǒng)自行決定的。這是由各編譯系統(tǒng)

10、自行決定的。ANSI C只規(guī)定只規(guī)定long型數(shù)據(jù)型數(shù)據(jù)長度不短于長度不短于int型,型,short型不長于型不長于int型型。 整型類型數(shù)據(jù)在內(nèi)存中用整型類型數(shù)據(jù)在內(nèi)存中用補(bǔ)碼形式存儲(chǔ)補(bǔ)碼形式存儲(chǔ)。 類型標(biāo)識(shí)符名 稱分配的字節(jié)數(shù)數(shù)的取值范圍signed int基本型2-3276832767short int短整型2-3276832767long int長整型4-21474836482147483647unsigned int無符號(hào)型2065535unsigned short int無符號(hào)短整型2065535unsigned long int無符號(hào)長整型40429496729592.2.1 整

11、型數(shù)據(jù)整型數(shù)據(jù) 2、整型常量、整型常量 C語言中,語言中,整型常量有十進(jìn)制數(shù)、八進(jìn)制數(shù)和十六進(jìn)制數(shù)三整型常量有十進(jìn)制數(shù)、八進(jìn)制數(shù)和十六進(jìn)制數(shù)三種種。例如:。例如:(1) 十進(jìn)制整常數(shù),如十進(jìn)制整常數(shù),如15、-123、6427等。等。(2) 八進(jìn)制整常數(shù),如八進(jìn)制整常數(shù),如015、-0123等,它們分別表示十進(jìn)制整等,它們分別表示十進(jìn)制整數(shù)數(shù)13、-83。(3) 十六進(jìn)制整常數(shù),如十六進(jìn)制整常數(shù),如0 x15、-0 x123等,它們分別表示十進(jìn)等,它們分別表示十進(jìn)制整數(shù)制整數(shù)21、-291。3、整型常量的后綴、整型常量的后綴 整型常數(shù)也有數(shù)據(jù)類型整型常數(shù)也有數(shù)據(jù)類型,如果它的值在,如果它的值在

12、int取值范圍之內(nèi),就取值范圍之內(nèi),就認(rèn)為它是基本整型,否則就認(rèn)為它是認(rèn)為它是基本整型,否則就認(rèn)為它是long。 程序員可以用后綴程序員可以用后綴“L”或或“l(fā)”來表示長整型數(shù),如:來表示長整型數(shù),如:158L。 整型無符號(hào)常數(shù)的后綴為整型無符號(hào)常數(shù)的后綴為“U”或或“u”,如:,如:358u、235Lu。 前綴,后綴可同時(shí)使用,如:前綴,后綴可同時(shí)使用,如:0 xA5Lu。102.2.1 整型數(shù)據(jù)整型數(shù)據(jù) 4、整型變量的定義、整型變量的定義 整型變量定義的一般形式為整型變量定義的一般形式為:類型標(biāo)識(shí)符:類型標(biāo)識(shí)符 變量名標(biāo)識(shí)符,變量名標(biāo)識(shí)符,變量名標(biāo)識(shí)符,變量名標(biāo)識(shí)符,;例如:例如:int

13、i,j,k; /* i,j,k為整型變量為整型變量 */long m,n; /* m,n為長整型變量為長整型變量 */unsigned u1,u2; /* u1,u2為無符號(hào)整型變量為無符號(hào)整型變量 */ 在書寫變量定義時(shí),應(yīng)注意以下幾點(diǎn)在書寫變量定義時(shí),應(yīng)注意以下幾點(diǎn):(1) 允許在一個(gè)類型標(biāo)識(shí)符后,定義多個(gè)相同類型的變量,各變?cè)试S在一個(gè)類型標(biāo)識(shí)符后,定義多個(gè)相同類型的變量,各變量名之間用逗號(hào)間隔,類型標(biāo)識(shí)符與變量名之間至少用一個(gè)量名之間用逗號(hào)間隔,類型標(biāo)識(shí)符與變量名之間至少用一個(gè)空格分隔。空格分隔。(2) 最后一個(gè)變量名之后必須以最后一個(gè)變量名之后必須以“;”號(hào)結(jié)尾。號(hào)結(jié)尾。(3) 變量定

14、義語句必須放在變量使用之前,一般放在函數(shù)體的開變量定義語句必須放在變量使用之前,一般放在函數(shù)體的開頭部分。頭部分。 112.2.1 整型數(shù)據(jù)整型數(shù)據(jù) 例例2.2 整型變量的定義和使用示例。整型變量的定義和使用示例。#include int main() int a,b,c,d; unsigned u;a=12; b=-24; u=10;c=a+u; d=b+u;printf(c=a+u=%d,d=b+u=%dn, c,d);return 0; 運(yùn)行結(jié)果:運(yùn)行結(jié)果:c=a+u=22,d=b+u=-14,本例說明,不同類型的本例說明,不同類型的量可以參與運(yùn)算并相互賦值量可以參與運(yùn)算并相互賦值。12

15、2.2.1 整型數(shù)據(jù)整型數(shù)據(jù) 5、整型數(shù)據(jù)的溢出、整型數(shù)據(jù)的溢出例例2.3 整型數(shù)據(jù)的溢出示例。整型數(shù)據(jù)的溢出示例。#include int main() short a,b;a=32767; b=a+1; /* b的值為的值為32768,顯然溢出了,顯然溢出了 */printf(a=%d b=%dn, a,b);return 0; 運(yùn)行結(jié)果:運(yùn)行結(jié)果: a=32767 b=-32768,產(chǎn)生溢出,而程序在運(yùn)行產(chǎn)生溢出,而程序在運(yùn)行時(shí)并不報(bào)錯(cuò)時(shí)并不報(bào)錯(cuò),但得到的結(jié)果與程序員的期望不同,這需要靠,但得到的結(jié)果與程序員的期望不同,這需要靠程序員的細(xì)心和經(jīng)驗(yàn)來保證結(jié)果的正確。程序員的細(xì)心和經(jīng)驗(yàn)來保證

16、結(jié)果的正確。 132.2.2 實(shí)型數(shù)據(jù)實(shí)型數(shù)據(jù)1、實(shí)型類型、實(shí)型類型 實(shí)型類型用來表示數(shù)學(xué)中帶有小數(shù)的實(shí)數(shù),各類實(shí)型類型數(shù)實(shí)型類型用來表示數(shù)學(xué)中帶有小數(shù)的實(shí)數(shù),各類實(shí)型類型數(shù)據(jù)所分配的內(nèi)存字節(jié)數(shù)及數(shù)的絕對(duì)值取值范圍如表據(jù)所分配的內(nèi)存字節(jié)數(shù)及數(shù)的絕對(duì)值取值范圍如表2.2所示。所示。 說明:對(duì)表中的說明:對(duì)表中的long double類型,不同的編譯系統(tǒng)處理的類型,不同的編譯系統(tǒng)處理的方法也不同方法也不同。 C語言中,實(shí)型也稱為浮點(diǎn)型,實(shí)數(shù)是語言中,實(shí)型也稱為浮點(diǎn)型,實(shí)數(shù)是以規(guī)格化的指數(shù)形式以規(guī)格化的指數(shù)形式存儲(chǔ)存儲(chǔ)在內(nèi)存單元中的在內(nèi)存單元中的。類型標(biāo)識(shí)符分配的字節(jié)數(shù)有效數(shù)字?jǐn)?shù)的絕對(duì)值取值范圍fl

17、oat47位3.4E-383.4E+38double815位1.7E-3081.7E+308long double19位3.4E-49321.1E+4932142.2.2 實(shí)型數(shù)據(jù)實(shí)型數(shù)據(jù)2、實(shí)型常量、實(shí)型常量 語言中,語言中,實(shí)型常量只有十進(jìn)制并且是有符號(hào)的實(shí)型常量實(shí)型常量只有十進(jìn)制并且是有符號(hào)的實(shí)型常量,它有兩種形式:十進(jìn)制小數(shù)形式和指數(shù)形式。它有兩種形式:十進(jìn)制小數(shù)形式和指數(shù)形式。(1) 小數(shù)形式,如小數(shù)形式,如0.0、0.25、.13、5.0、300.、5.789、-67.83 等。等。(2) 指數(shù)形式,如指數(shù)形式,如2.1E5、3.7E-2、0.5E7、-2.8E-2 等。等。 注意

18、:階碼標(biāo)志注意:階碼標(biāo)志E可以為小寫字母可以為小寫字母e,E前面必須有數(shù),后面前面必須有數(shù),后面的階碼只能為整數(shù)的階碼只能為整數(shù)。例如:。例如:E5、3e2.6、2E 等都是不合法的。等都是不合法的。 許多編譯系統(tǒng)都許多編譯系統(tǒng)都默認(rèn)將實(shí)型常量作為默認(rèn)將實(shí)型常量作為double類型來處理類型來處理,但在實(shí)型常量后加但在實(shí)型常量后加后綴后綴“F”或或“f”可表示該數(shù)為可表示該數(shù)為float型型常常量,加量,加后綴后綴“L”或或“l(fā)”可表示該數(shù)為可表示該數(shù)為long double型型常量,常量,例如:例如:35.6F為為float型常量。型常量。 152.2.2 實(shí)型數(shù)據(jù)實(shí)型數(shù)據(jù)3、實(shí)型變量的定義

19、、實(shí)型變量的定義實(shí)型變量定義的形式和書寫規(guī)則都與整型變量相同。例如:實(shí)型變量定義的形式和書寫規(guī)則都與整型變量相同。例如:float x,y; /* x,y為單精度實(shí)型變量為單精度實(shí)型變量 */double a,b,c; /* a,b,c為雙精度實(shí)型變量為雙精度實(shí)型變量 */4、實(shí)型數(shù)據(jù)的舍入誤差、實(shí)型數(shù)據(jù)的舍入誤差 與整型數(shù)據(jù)不同,即使數(shù)據(jù)的取值沒有超出范圍,但由于實(shí)與整型數(shù)據(jù)不同,即使數(shù)據(jù)的取值沒有超出范圍,但由于實(shí)型數(shù)據(jù)的型數(shù)據(jù)的有效數(shù)字是有限的,故可能產(chǎn)生舍入誤差有效數(shù)字是有限的,故可能產(chǎn)生舍入誤差。例例2.4 實(shí)型數(shù)據(jù)的舍入誤差示例。實(shí)型數(shù)據(jù)的舍入誤差示例。#include int m

20、ain() float a; double b;float s; int i; 162.2.2 實(shí)型數(shù)據(jù)實(shí)型數(shù)據(jù)a=123456.789e5; /* 在賦值過程中產(chǎn)生舍入誤差在賦值過程中產(chǎn)生舍入誤差 */b=123456.789e5;printf(a=%f a+20=%fn, a,a+20);printf(b=%f b+20=%fn, b,b+20);s=0;for (i=1; i=1000; i+) s += 0.1; /* 十進(jìn)制數(shù)十進(jìn)制數(shù)0.1在計(jì)算機(jī)內(nèi)是近似表示的在計(jì)算機(jī)內(nèi)是近似表示的 */printf(s=%fn, s);return 0; 運(yùn)行結(jié)果:運(yùn)行結(jié)果:a=123456788

21、48.000000 a+20=12345678868.000000b=12345678900.000000 b+20=12345678920.000000s=99.999046172.2.3 字符型數(shù)據(jù)字符型數(shù)據(jù)1、字符常量、字符常量 字符常量是用單引號(hào)括起來的字符常量是用單引號(hào)括起來的ASCII碼字符集中的任意一個(gè)碼字符集中的任意一個(gè)可打印字符可打印字符。例如。例如 a、5、=、+、? 等。語言中,字等。語言中,字符常量符常量有以下特點(diǎn)有以下特點(diǎn):(1) 字符常量只能用單引號(hào)括起來,不能用雙引號(hào)或其它括號(hào),字符常量只能用單引號(hào)括起來,不能用雙引號(hào)或其它括號(hào),如如 a不是字符常量不是字符常量。

22、(2) 字符常量只能是單個(gè)字符,不能是字符串,如字符常量只能是單個(gè)字符,不能是字符串,如 Hello是非是非法的法的。注意:。注意:中中也是非法的也是非法的,因?yàn)橐粋€(gè)漢字相當(dāng)于二個(gè)西,因?yàn)橐粋€(gè)漢字相當(dāng)于二個(gè)西文字符。文字符。 字符類型數(shù)據(jù)在內(nèi)存中占用字符類型數(shù)據(jù)在內(nèi)存中占用1個(gè)字節(jié),存放的是該字符所對(duì)個(gè)字節(jié),存放的是該字符所對(duì)應(yīng)的應(yīng)的ASCII碼值。碼值。注意:注意:2和和2是不同的是不同的。 182.2.3 字符型數(shù)據(jù)字符型數(shù)據(jù)2、轉(zhuǎn)義字符、轉(zhuǎn)義字符 轉(zhuǎn)義字符是一種特殊的字符常量,主要用來表示轉(zhuǎn)義字符是一種特殊的字符常量,主要用來表示ASCII碼字碼字符集中不可打印的字符或具有控制功能的字符

23、符集中不可打印的字符或具有控制功能的字符。例如:。例如: n(換行)、(換行)、r(回車)、(回車)、a(響鈴)、(響鈴)、b(退格)、(退格)、t(水(水平制表)、平制表)、(反斜線符)、(反斜線符)、(單引號(hào)符)、(單引號(hào)符)、“(雙引號(hào)(雙引號(hào)符)、符)、0(空字符)等。(空字符)等。 轉(zhuǎn)義字符轉(zhuǎn)義字符“ddd或或xhh”主要是用來表示一些特殊的控制字主要是用來表示一些特殊的控制字符符。廣義地講,也可表示。廣義地講,也可表示ASCII碼字符集中的任何一個(gè)字符,碼字符集中的任何一個(gè)字符,如如101表示字母表示字母A,134表示反斜線符表示反斜線符,x0A表示換行等。表示換行等。 注意注意:

24、 轉(zhuǎn)義字符中只能使用小寫字母,每個(gè)轉(zhuǎn)義字符只能轉(zhuǎn)義字符中只能使用小寫字母,每個(gè)轉(zhuǎn)義字符只能看作一個(gè)字符;看作一個(gè)字符; a響鈴對(duì)屏幕沒有任何影響,但會(huì)使得響鈴對(duì)屏幕沒有任何影響,但會(huì)使得計(jì)算機(jī)內(nèi)的喇叭執(zhí)行相應(yīng)的操作。計(jì)算機(jī)內(nèi)的喇叭執(zhí)行相應(yīng)的操作。192.2.3 字符型數(shù)據(jù)字符型數(shù)據(jù)例例2.5 轉(zhuǎn)義字符的使用示例。轉(zhuǎn)義字符的使用示例。#include int main() int a;a=5;printf(a=%dnSHtNTbUn, a);printf(023456789r1777); /* 注意喇叭發(fā)出的聲響注意喇叭發(fā)出的聲響 */return 0; 運(yùn)行結(jié)果:運(yùn)行結(jié)果:a=5a=5SH N

25、USH NU123456789123456789202.2.3 字符型數(shù)據(jù)字符型數(shù)據(jù)3、字符變量的定義、字符變量的定義 字符變量定義的形式和書寫規(guī)則都與整型變量相同。例如:字符變量定義的形式和書寫規(guī)則都與整型變量相同。例如: char a,b; 一個(gè)字符變量中只能存放一個(gè)字符,放的不是字符本身,是一個(gè)字符變量中只能存放一個(gè)字符,放的不是字符本身,是字符對(duì)應(yīng)的字符對(duì)應(yīng)的ASCII碼值,故每個(gè)字符變量只分配一個(gè)字節(jié)的碼值,故每個(gè)字符變量只分配一個(gè)字節(jié)的內(nèi)存空間。內(nèi)存空間。語句語句“a=a;”與語句與語句“a=97;”實(shí)際上是等價(jià)的實(shí)際上是等價(jià)的。當(dāng)然,如果要把字符當(dāng)然,如果要把字符a賦給字符變量賦

26、給字符變量a,盡量不要用語句盡量不要用語句“a=97;”而應(yīng)用語句而應(yīng)用語句“a=a;”。 語言語言允許對(duì)字符變量進(jìn)行算術(shù)運(yùn)算允許對(duì)字符變量進(jìn)行算術(shù)運(yùn)算。 212.2.3 字符型數(shù)據(jù)字符型數(shù)據(jù)例例2.6 英文字母的大小寫轉(zhuǎn)換。英文字母的大小寫轉(zhuǎn)換。#include int main() char a,b,d;a=a; b=B; d=5;a=a-32; /* 小寫轉(zhuǎn)大寫,建議用語句小寫轉(zhuǎn)大寫,建議用語句a=a-a+A; */b=b+32; /* 大寫轉(zhuǎn)小寫,建議用語句大寫轉(zhuǎn)小寫,建議用語句b=b-A+a; */printf(%c,%cn, a,b);printf(%d,%dn, a,b);pri

27、ntf(%dn, d-0); /* 字符字符5轉(zhuǎn)換成對(duì)應(yīng)的數(shù)轉(zhuǎn)換成對(duì)應(yīng)的數(shù)5 */return 0; 運(yùn)行結(jié)果:運(yùn)行結(jié)果:A,b65,985222.2.3 字符型數(shù)據(jù)字符型數(shù)據(jù)4、字符串常量、字符串常量 C語言中沒有字符串類型(字符串變量是通過一維字符數(shù)組語言中沒有字符串類型(字符串變量是通過一維字符數(shù)組來實(shí)現(xiàn)的),但有字符串常量。例如:來實(shí)現(xiàn)的),但有字符串常量。例如: China ,C language, $12.5, 等。字符串常量和字符常量等。字符串常量和字符常量主要主要有以下區(qū)別有以下區(qū)別:(1) 字符常量由單引號(hào)括起來,字符串常量由雙引號(hào)括起來。字符常量由單引號(hào)括起來,字符串常量由

28、雙引號(hào)括起來。(2) 字符常量只能是單個(gè)字符,字符串常量則可以含字符常量只能是單個(gè)字符,字符串常量則可以含0個(gè)個(gè)、1個(gè)個(gè)或多個(gè)字符?;蚨鄠€(gè)字符。(3) 字符常量占字符常量占1個(gè)字節(jié)的內(nèi)存空間,而個(gè)字節(jié)的內(nèi)存空間,而字符串常量占的內(nèi)存字字符串常量占的內(nèi)存字節(jié)數(shù)等于該字符串中的字符個(gè)數(shù)加節(jié)數(shù)等于該字符串中的字符個(gè)數(shù)加1,增加的,增加的1個(gè)字節(jié)中存放個(gè)字節(jié)中存放字符串字符串結(jié)束標(biāo)志結(jié)束標(biāo)志0,如字符串,如字符串“program”在內(nèi)存中占在內(nèi)存中占用用8個(gè)字節(jié)。個(gè)字節(jié)。注意:注意:a和和“a”是不同的是不同的。(4) 可把一個(gè)字符常量賦予字符變量,但可把一個(gè)字符常量賦予字符變量,但不能把一個(gè)字符串常

29、量不能把一個(gè)字符串常量賦予字符變量賦予字符變量,只能把一個(gè)字符串常量賦予一個(gè)字符串變量。,只能把一個(gè)字符串常量賦予一個(gè)字符串變量。232.2.4 變量的初始化變量的初始化 要特別強(qiáng)調(diào)的是要特別強(qiáng)調(diào)的是:在:在C語言的一個(gè)函數(shù)中,定義一個(gè)變量后,語言的一個(gè)函數(shù)中,定義一個(gè)變量后,系統(tǒng)就為其分配相應(yīng)的內(nèi)存空間,但它的值是系統(tǒng)就為其分配相應(yīng)的內(nèi)存空間,但它的值是不確定不確定的,或的,或者說是一個(gè)者說是一個(gè)隨機(jī)值隨機(jī)值。 有有三種方法為變量提供初值三種方法為變量提供初值,即變量的初始化、用賦值語句,即變量的初始化、用賦值語句給變量賦初值和用輸入語句給變量賦初值。給變量賦初值和用輸入語句給變量賦初值。在

30、變量定義的同在變量定義的同時(shí)給變量賦以初值的方法,稱為變量的初始化時(shí)給變量賦以初值的方法,稱為變量的初始化。在變量定義。在變量定義時(shí)賦初值的一般形式為:時(shí)賦初值的一般形式為: 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 變量名變量名1=值值1,變量名,變量名2=值值2,;例如:例如:float x=3.2,y=83.75;char ch1=A,ch2=B; 應(yīng)注意,在應(yīng)注意,在變量定義時(shí)不允許連續(xù)賦值變量定義時(shí)不允許連續(xù)賦值,例如:,例如: int a=b=c=5; 是不合法的。是不合法的。 242.2.4 變量的初始化變量的初始化例例2.7 變量的初始化示例。變量的初始化示例。#include int main(

31、) int a=3,b,c=5;printf(b=%dn, b); /* 輸出一個(gè)隨機(jī)值輸出一個(gè)隨機(jī)值 */b=a+c;printf(b=%dn, b);return 0; 運(yùn)行結(jié)果:運(yùn)行結(jié)果:b=2293632b=8252.3.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式 運(yùn)算符是由一個(gè)或多個(gè)字符組成,用來表示某種運(yùn)算的符號(hào),運(yùn)算符是由一個(gè)或多個(gè)字符組成,用來表示某種運(yùn)算的符號(hào),運(yùn)算符與常量、變量、函數(shù)一起組成表達(dá)式運(yùn)算符與常量、變量、函數(shù)一起組成表達(dá)式,用來完成復(fù)雜,用來完成復(fù)雜的運(yùn)算功能。的運(yùn)算功能。語言中的運(yùn)算符和表達(dá)式種類之多,在高級(jí)語言中的運(yùn)算符和表達(dá)式種類之多,在高級(jí)語言中是

32、少見的語言中是少見的,這也是語言的主要特點(diǎn)之一。,這也是語言的主要特點(diǎn)之一。1、算術(shù)運(yùn)算符、算術(shù)運(yùn)算符 C語言中算術(shù)運(yùn)算符有:語言中算術(shù)運(yùn)算符有:+(加)、(加)、-(減或取負(fù))、(減或取負(fù))、*(乘)、(乘)、/(除)、(除)、%(取余)、(取余)、+(自增(自增1)、)、-(自減(自減1)7種,其種,其中中 +、-、*、% 需要兩個(gè)操作數(shù),稱為需要兩個(gè)操作數(shù),稱為雙目運(yùn)算符雙目運(yùn)算符,而,而 +、-、-(取負(fù))只要一個(gè)操作數(shù),稱為(取負(fù))只要一個(gè)操作數(shù),稱為單目運(yùn)算符單目運(yùn)算符。 在使用在使用+、-、*、% 運(yùn)算符時(shí)運(yùn)算符時(shí)要注意以下幾點(diǎn)要注意以下幾點(diǎn):(1) 兩個(gè)整數(shù)相除時(shí),它們的結(jié)果也

33、為整數(shù)。例如:兩個(gè)整數(shù)相除時(shí),它們的結(jié)果也為整數(shù)。例如:7/2 =3 。(2) 取余運(yùn)算符取余運(yùn)算符%兩邊的操作數(shù)必須都是整型量。例如:兩邊的操作數(shù)必須都是整型量。例如:4%7 =4,12%5=2,而,而7.5%5 是非法的。是非法的。(3)“-”既是雙目運(yùn)算符減,也可作單目運(yùn)算符取負(fù),例如:既是雙目運(yùn)算符減,也可作單目運(yùn)算符取負(fù),例如:-x。 262.3.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式 例例2.8 使用算術(shù)運(yùn)算符取出一個(gè)整數(shù)的某一位數(shù)字。使用算術(shù)運(yùn)算符取出一個(gè)整數(shù)的某一位數(shù)字。#include int main() int a, b, c=345;a=7/2*2; b=7.

34、0/2*2;printf(a=%dn, a); /* a的值是的值是6不是不是7 */printf(b=%dn, b); /* b的值是的值是7 */printf(個(gè)位個(gè)位=%dn, c%10);printf(十位十位=%dn, c%100/10);printf(百位百位=%dn, c/100);return 0; 運(yùn)行結(jié)果:運(yùn)行結(jié)果:a=6b=7個(gè)位個(gè)位=5十位十位=4百位百位=3272.3.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式 2、自增、自減運(yùn)算符、自增、自減運(yùn)算符 +a 等價(jià)于等價(jià)于 a=a+1 -a 等價(jià)于等價(jià)于 a=a-1 注意:注意:自增和自減運(yùn)算符只能用于變量自增和自

35、減運(yùn)算符只能用于變量,不能用于常量和表,不能用于常量和表達(dá)式。例如:達(dá)式。例如:3+ 和和 (i+j)+ 都是非法的。都是非法的。 前置運(yùn)算前置運(yùn)算:例如:例如:假設(shè)變量假設(shè)變量a的初值為的初值為4,則表達(dá)式,則表達(dá)式“c=(+a)*6”的運(yùn)算結(jié)果是的運(yùn)算結(jié)果是c的值為的值為30,a的值為的值為5, 后置運(yùn)算后置運(yùn)算:表達(dá)式:表達(dá)式“c=(a+)*6”的運(yùn)算結(jié)果是的運(yùn)算結(jié)果是c的值為的值為24,a的值為的值為5。 自增和自減運(yùn)算符是帶有副作用的運(yùn)算符自增和自減運(yùn)算符是帶有副作用的運(yùn)算符,建議不要在一個(gè),建議不要在一個(gè)表達(dá)式中對(duì)同一個(gè)變量多次使用這樣的運(yùn)算符,例如表達(dá)式表達(dá)式中對(duì)同一個(gè)變量多次使

36、用這樣的運(yùn)算符,例如表達(dá)式“(+a)+(+a)” 。因此不要隨便濫用,因此不要隨便濫用,+和和-一般用于循一般用于循環(huán)語句和數(shù)組操作環(huán)語句和數(shù)組操作。 282.3.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式 3、算術(shù)表達(dá)式、算術(shù)表達(dá)式 表達(dá)式是由常量、變量、函數(shù)和運(yùn)算符組合起來的式子,單表達(dá)式是由常量、變量、函數(shù)和運(yùn)算符組合起來的式子,單個(gè)的常量、變量、函數(shù)可以看作是表達(dá)式的特例。個(gè)的常量、變量、函數(shù)可以看作是表達(dá)式的特例。表達(dá)式求表達(dá)式求值按運(yùn)算符的優(yōu)先級(jí)和結(jié)合性規(guī)定的順序進(jìn)行的值按運(yùn)算符的優(yōu)先級(jí)和結(jié)合性規(guī)定的順序進(jìn)行的。一個(gè)表達(dá)一個(gè)表達(dá)式有一個(gè)值及其類型式有一個(gè)值及其類型,它就是計(jì)算

37、表達(dá)式所得結(jié)果的值和類,它就是計(jì)算表達(dá)式所得結(jié)果的值和類型。型。 用算術(shù)運(yùn)算符將各種常量、變量或函數(shù)組合起來的式子稱為用算術(shù)運(yùn)算符將各種常量、變量或函數(shù)組合起來的式子稱為算術(shù)表達(dá)式,必要時(shí)可算術(shù)表達(dá)式,必要時(shí)可使用圓括號(hào)來改變優(yōu)先級(jí)使用圓括號(hào)來改變優(yōu)先級(jí),但,但不能用不能用方括號(hào)或花括號(hào)方括號(hào)或花括號(hào)。算術(shù)表達(dá)式的值是數(shù)值,類型可以是各種。算術(shù)表達(dá)式的值是數(shù)值,類型可以是各種整型或各種實(shí)型。例如:整型或各種實(shí)型。例如: 5、 a、 +b、 a+b、 a*2/c、 b+c*d/e、 (x+y)*8-(a+b)/7、 sqrt(x)+exp(y) 等等。292.3.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)

38、算符和算術(shù)表達(dá)式 在在將數(shù)學(xué)表達(dá)式轉(zhuǎn)換為將數(shù)學(xué)表達(dá)式轉(zhuǎn)換為C語言的算術(shù)表達(dá)式時(shí)要注意以下幾語言的算術(shù)表達(dá)式時(shí)要注意以下幾點(diǎn)點(diǎn):(1) 乘號(hào)不能省略,如乘號(hào)不能省略,如5(x+y) 5*(x+y)。(2) 寫在一行上,加必要的括號(hào),如寫在一行上,加必要的括號(hào),如 (a+b)/(c+d)。(3) 常數(shù)常數(shù)、e等的表達(dá),如等的表達(dá),如2r 2*3.1416*r。(4) 下標(biāo)的表達(dá),如下標(biāo)的表達(dá),如r1+r2 r1+r2。(5) 數(shù)學(xué)函數(shù)的表達(dá),數(shù)學(xué)函數(shù)的表達(dá),C語言中數(shù)學(xué)函數(shù)的原型在頭文件語言中數(shù)學(xué)函數(shù)的原型在頭文件“math.h”中,在使用數(shù)學(xué)函數(shù)之前必須用命令中,在使用數(shù)學(xué)函數(shù)之前必須用命令#i

39、nclude ,其中,其中三角函數(shù)的單位是弧度,不是度三角函數(shù)的單位是弧度,不是度,思考如思考如何表示何表示數(shù)學(xué)表達(dá)式數(shù)學(xué)表達(dá)式sin(30) ?dcba302.3.2 賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符和賦值表達(dá)式1、賦值運(yùn)算符、賦值運(yùn)算符 賦值運(yùn)算符是雙目運(yùn)算符,其使用形式是:賦值運(yùn)算符是雙目運(yùn)算符,其使用形式是: 變量名變量名 賦值運(yùn)算符賦值運(yùn)算符 表達(dá)式表達(dá)式 賦值運(yùn)算符的賦值運(yùn)算符的優(yōu)先級(jí)很低優(yōu)先級(jí)很低,它僅僅比逗號(hào)運(yùn)算符高一點(diǎn)。,它僅僅比逗號(hào)運(yùn)算符高一點(diǎn)。 基本賦值運(yùn)算符基本賦值運(yùn)算符為為=,其功能是計(jì)算表達(dá)式的值,再將值賦,其功能是計(jì)算表達(dá)式的值,再將值賦予左邊的變量。例如:予左邊

40、的變量。例如:n=3 。 復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符有:有:+=、 -=、 *=、 /=、 %=、 &=、 |=、 =、 = 。例如:。例如:a+=5 等價(jià)于等價(jià)于 a=a+5m%=n 等價(jià)于等價(jià)于 m=m%nx*=y+7 等價(jià)于等價(jià)于 x=x*(y+7) 注意:這里要加注意:這里要加() 復(fù)合賦值運(yùn)算符這種寫法,可以使得表達(dá)簡(jiǎn)潔;十分有復(fù)合賦值運(yùn)算符這種寫法,可以使得表達(dá)簡(jiǎn)潔;十分有利于編譯處理,能提高編譯效率并產(chǎn)生質(zhì)量較高的目標(biāo)代碼。利于編譯處理,能提高編譯效率并產(chǎn)生質(zhì)量較高的目標(biāo)代碼。 312.3.2 賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符和賦值表達(dá)式2、賦值表達(dá)式、賦值表達(dá)式 在語

41、言中,把在語言中,把“=”定義為運(yùn)算符,從而構(gòu)成賦值表達(dá)式,定義為運(yùn)算符,從而構(gòu)成賦值表達(dá)式,凡是表達(dá)式可以出現(xiàn)的地方均可出現(xiàn)賦值表達(dá)式凡是表達(dá)式可以出現(xiàn)的地方均可出現(xiàn)賦值表達(dá)式。 賦值表達(dá)式的值就是賦值運(yùn)算符左邊的變量所得到的值賦值表達(dá)式的值就是賦值運(yùn)算符左邊的變量所得到的值。例。例如,表達(dá)式如,表達(dá)式c=(a=5)+(b=8)是合法的。是合法的。 由于在賦值運(yùn)算符由于在賦值運(yùn)算符“=”的右邊又可以是一個(gè)賦值表達(dá)式,的右邊又可以是一個(gè)賦值表達(dá)式,因此,表達(dá)式因此,表達(dá)式“變量變量=(變量變量=(變量變量=表達(dá)式表達(dá)式)”是合法的,是合法的,賦值運(yùn)算符具有右結(jié)合性,表達(dá)式賦值運(yùn)算符具有右結(jié)合性

42、,表達(dá)式“變量變量=變量變量=變量變量=表表達(dá)式達(dá)式”也是合法的。例如:表達(dá)式也是合法的。例如:表達(dá)式a=b=c=5是合法的,它可是合法的,它可理解為理解為a=(b=(c=5) ,其作用是把,其作用是把5同時(shí)賦予變量同時(shí)賦予變量a、b和和c。 根據(jù)語言規(guī)定,根據(jù)語言規(guī)定,任何表達(dá)式在其末尾加上分號(hào)就構(gòu)成為語任何表達(dá)式在其末尾加上分號(hào)就構(gòu)成為語句句,因此,賦值表達(dá)式末尾加上分號(hào)可以構(gòu)成賦值語句。例,因此,賦值表達(dá)式末尾加上分號(hào)可以構(gòu)成賦值語句。例如:如:s=0; n+=3; a=b=c=5; 322.3.2 賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符和賦值表達(dá)式3、注意事項(xiàng)、注意事項(xiàng)(1) 賦值表達(dá)式賦值

43、表達(dá)式a=b計(jì)算后變量計(jì)算后變量b的值不變,而變量的值不變,而變量a原有的值被原有的值被變量變量b的值所取代,即的值所取代,即變量中存放的值變量中存放的值“取之不盡、一存就取之不盡、一存就變變”,就像錄音磁帶一樣。,就像錄音磁帶一樣。(2) 由于由于=是賦值運(yùn)算符不是數(shù)學(xué)中的等號(hào)是賦值運(yùn)算符不是數(shù)學(xué)中的等號(hào),所以賦值表達(dá)式,所以賦值表達(dá)式a=a+1是有意義的,而數(shù)學(xué)中是有意義的,而數(shù)學(xué)中a=a+1是完全不能成立的。是完全不能成立的。(3) 賦值運(yùn)算符的賦值運(yùn)算符的左邊只能是變量左邊只能是變量,不能是常量或表達(dá)式,如,不能是常量或表達(dá)式,如a+b=c是不合法的。是不合法的。(4) 如果賦值運(yùn)算符

44、如果賦值運(yùn)算符兩邊的數(shù)據(jù)類型不相同,系統(tǒng)將自動(dòng)進(jìn)行類兩邊的數(shù)據(jù)類型不相同,系統(tǒng)將自動(dòng)進(jìn)行類型轉(zhuǎn)換型轉(zhuǎn)換,即把賦值號(hào)右邊表達(dá)式值的類型轉(zhuǎn)換成左邊變量的,即把賦值號(hào)右邊表達(dá)式值的類型轉(zhuǎn)換成左邊變量的類型后再賦值。具體規(guī)則見類型后再賦值。具體規(guī)則見2.4節(jié)。節(jié)。 332.3.3 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式 逗號(hào)運(yùn)算符的功能是把兩個(gè)表達(dá)式連接起來組成一個(gè)表達(dá)式,逗號(hào)運(yùn)算符的功能是把兩個(gè)表達(dá)式連接起來組成一個(gè)表達(dá)式,稱為逗號(hào)表達(dá)式。其一般形式為:稱為逗號(hào)表達(dá)式。其一般形式為: 表達(dá)式表達(dá)式1,表達(dá)式,表達(dá)式2 逗號(hào)運(yùn)算符的逗號(hào)運(yùn)算符的求值過程是求值過程是分別求兩個(gè)表達(dá)式的值,分別求兩個(gè)

45、表達(dá)式的值,并以表達(dá)并以表達(dá)式式2的值和類型的值和類型作為整個(gè)逗號(hào)表達(dá)式的值和類型。設(shè)有變量作為整個(gè)逗號(hào)表達(dá)式的值和類型。設(shè)有變量定義定義“int a=2,b=4;和和double x=5.6,y=7.8;”,則:,則: 表達(dá)式表達(dá)式“a+b,x+y”的值是的值是13.4,類型是,類型是double。 表達(dá)式表達(dá)式“x+y,a+b”的值是的值是6,類型是,類型是int。 對(duì)于逗號(hào)表達(dá)式還要注意以下幾點(diǎn)對(duì)于逗號(hào)表達(dá)式還要注意以下幾點(diǎn):(1) 逗號(hào)運(yùn)算符的逗號(hào)運(yùn)算符的優(yōu)先級(jí)是最低的優(yōu)先級(jí)是最低的,所以,所以x=(a=3,6*a) x=a=3,6*a 。 342.3.3 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)運(yùn)

46、算符和逗號(hào)表達(dá)式(2) 逗號(hào)表達(dá)式一般形式中的表達(dá)式逗號(hào)表達(dá)式一般形式中的表達(dá)式1和表達(dá)式和表達(dá)式2又可以是逗號(hào)又可以是逗號(hào)表達(dá)式,從而表達(dá)式,從而形成了嵌套情形形成了嵌套情形。因此可以把逗號(hào)表達(dá)式擴(kuò)展。因此可以把逗號(hào)表達(dá)式擴(kuò)展為以下形式:為以下形式: 表達(dá)式表達(dá)式1,表達(dá)式,表達(dá)式2,表達(dá)式,表達(dá)式n 整個(gè)逗號(hào)表達(dá)式的值和類型是表達(dá)式整個(gè)逗號(hào)表達(dá)式的值和類型是表達(dá)式n的值和類型的值和類型。(3) 使用逗號(hào)表達(dá)式,使用逗號(hào)表達(dá)式,通常是要把多個(gè)表達(dá)式連接起來組成一個(gè)通常是要把多個(gè)表達(dá)式連接起來組成一個(gè)表達(dá)式,并分別求逗號(hào)表達(dá)式內(nèi)各表達(dá)式的值表達(dá)式,并分別求逗號(hào)表達(dá)式內(nèi)各表達(dá)式的值,并不一定需,

47、并不一定需要得到和使用整個(gè)逗號(hào)表達(dá)式的值。逗號(hào)表達(dá)式最常用于要得到和使用整個(gè)逗號(hào)表達(dá)式的值。逗號(hào)表達(dá)式最常用于for循環(huán)語句中。循環(huán)語句中。(4) 并不是在所有出現(xiàn)逗號(hào)的地方都是逗號(hào)運(yùn)算符并不是在所有出現(xiàn)逗號(hào)的地方都是逗號(hào)運(yùn)算符,如在變量定,如在變量定義中,函數(shù)參數(shù)表中逗號(hào)只是用作各變量之間的間隔符。義中,函數(shù)參數(shù)表中逗號(hào)只是用作各變量之間的間隔符。 352.3.4 &運(yùn)算符和運(yùn)算符和sizeof運(yùn)算符運(yùn)算符1、&運(yùn)算符運(yùn)算符 &運(yùn)算符是運(yùn)算符是取地址運(yùn)算符取地址運(yùn)算符,它常用于,它常用于scanf函數(shù)中以及給指針函數(shù)中以及給指針變量賦初值,詳見后續(xù)章節(jié)。變量賦初值,詳

48、見后續(xù)章節(jié)。2、sizeof運(yùn)算符運(yùn)算符 求字節(jié)數(shù)運(yùn)算符為求字節(jié)數(shù)運(yùn)算符為sizeof,其使用形式是:,其使用形式是:sizeof(數(shù)據(jù)類型數(shù)據(jù)類型名名 或或 變量名變量名 或或 表達(dá)式表達(dá)式)例例2.9 用用sizeof運(yùn)算符求各種數(shù)據(jù)類型的字節(jié)數(shù)示例。運(yùn)算符求各種數(shù)據(jù)類型的字節(jié)數(shù)示例。#include int main() 362.3.4 &運(yùn)算符和運(yùn)算符和sizeof運(yùn)算符運(yùn)算符printf(586: %dn, sizeof(586); printf(58.6: %dn, sizeof(58.6);printf(58.6F: %dn, sizeof(58.6F);printf(c

49、har: %dn, sizeof(char);printf(short: %dn, sizeof(short);printf(int: %dn, sizeof(int);printf(long: %dn, sizeof(long);printf(float: %dn, sizeof(float);printf(double: %dn, sizeof(double);printf(long double: %dn, sizeof(long double);return 0; 在在Dev-C+ 4.9.9.0環(huán)境中,運(yùn)行結(jié)果如下:環(huán)境中,運(yùn)行結(jié)果如下: 586: 458.6: 858.6F: 4c

50、har: 1short: 2int: 4long: 4float: 4double: 8long double: 12372.3.5 運(yùn)算符的優(yōu)先級(jí)和結(jié)合性運(yùn)算符的優(yōu)先級(jí)和結(jié)合性 語言中,運(yùn)算符的運(yùn)算語言中,運(yùn)算符的運(yùn)算優(yōu)先級(jí)共分為優(yōu)先級(jí)共分為15級(jí)級(jí),1級(jí)最高,級(jí)最高,15級(jí)最低。當(dāng)運(yùn)算符級(jí)最低。當(dāng)運(yùn)算符優(yōu)先級(jí)相同時(shí),則按運(yùn)算符的結(jié)合性所規(guī)優(yōu)先級(jí)相同時(shí),則按運(yùn)算符的結(jié)合性所規(guī)定的結(jié)合方向進(jìn)行運(yùn)算定的結(jié)合方向進(jìn)行運(yùn)算。 運(yùn)算符的優(yōu)先級(jí)不必去背運(yùn)算符的優(yōu)先級(jí)不必去背,只要記住圓括號(hào)是最高等級(jí)的運(yùn),只要記住圓括號(hào)是最高等級(jí)的運(yùn)算符,在表達(dá)式中要求優(yōu)先運(yùn)算的地方都用圓括號(hào)括起來。算符,在表達(dá)式中要求

51、優(yōu)先運(yùn)算的地方都用圓括號(hào)括起來。 語言中各種運(yùn)算符的語言中各種運(yùn)算符的結(jié)合性分為兩種結(jié)合性分為兩種,即,即左結(jié)合性左結(jié)合性(自左至自左至右右)和和右結(jié)合性右結(jié)合性(自右至左自右至左),大部分的運(yùn)算符是左結(jié)合性大部分的運(yùn)算符是左結(jié)合性。 算術(shù)運(yùn)算符是左結(jié)合性,即自左至右。如有表達(dá)式算術(shù)運(yùn)算符是左結(jié)合性,即自左至右。如有表達(dá)式x-y+z則則y應(yīng)先與應(yīng)先與“-”號(hào)結(jié)合,執(zhí)行號(hào)結(jié)合,執(zhí)行x-y運(yùn)算,然后再執(zhí)行運(yùn)算,然后再執(zhí)行+z的運(yùn)算。的運(yùn)算。 只有少數(shù)的三類運(yùn)算符是右結(jié)合性只有少數(shù)的三類運(yùn)算符是右結(jié)合性,最典型是賦值運(yùn)算符。,最典型是賦值運(yùn)算符。如如x=y=z,由于,由于“=”的右結(jié)合性,應(yīng)先執(zhí)行的

52、右結(jié)合性,應(yīng)先執(zhí)行y=z再執(zhí)行再執(zhí)行x=(y=z)運(yùn)算。再如取負(fù)運(yùn)算符(運(yùn)算。再如取負(fù)運(yùn)算符(-)和自增運(yùn)算符()和自增運(yùn)算符(+)都)都是右結(jié)合性,而且優(yōu)先級(jí)相同,所以表達(dá)式是右結(jié)合性,而且優(yōu)先級(jí)相同,所以表達(dá)式-a+相當(dāng)于相當(dāng)于-(a+),先與右邊的,先與右邊的+結(jié)合,再與左邊的結(jié)合,再與左邊的-結(jié)合。結(jié)合。 382.4.1 類型自動(dòng)轉(zhuǎn)換類型自動(dòng)轉(zhuǎn)換1、自動(dòng)轉(zhuǎn)換、自動(dòng)轉(zhuǎn)換 轉(zhuǎn)換轉(zhuǎn)換由編譯系統(tǒng)自動(dòng)完成由編譯系統(tǒng)自動(dòng)完成,自動(dòng)類型轉(zhuǎn)換總的原則自動(dòng)類型轉(zhuǎn)換總的原則是將低類是將低類型數(shù)據(jù)向高類型數(shù)據(jù)轉(zhuǎn)換,從而使得在轉(zhuǎn)換過程中數(shù)據(jù)的精型數(shù)據(jù)向高類型數(shù)據(jù)轉(zhuǎn)換,從而使得在轉(zhuǎn)換過程中數(shù)據(jù)的精度盡可能保持不

53、變。度盡可能保持不變。 高高 double float long unsigned 低低 int char, short392.4.1 類型自動(dòng)轉(zhuǎn)換類型自動(dòng)轉(zhuǎn)換 自動(dòng)轉(zhuǎn)換遵循以下規(guī)則:自動(dòng)轉(zhuǎn)換遵循以下規(guī)則:(1) 若參與運(yùn)算的數(shù)據(jù)的類型不同,則先轉(zhuǎn)換成同一種類型,然若參與運(yùn)算的數(shù)據(jù)的類型不同,則先轉(zhuǎn)換成同一種類型,然后進(jìn)行運(yùn)算。后進(jìn)行運(yùn)算。(2) 先進(jìn)行水平方向上的轉(zhuǎn)換,這種轉(zhuǎn)換是必須要進(jìn)行的。先進(jìn)行水平方向上的轉(zhuǎn)換,這種轉(zhuǎn)換是必須要進(jìn)行的。(3) 如果在進(jìn)行了水平方向上的轉(zhuǎn)換后,仍然存在不同類型的數(shù)如果在進(jìn)行了水平方向上的轉(zhuǎn)換后,仍然存在不同類型的數(shù)據(jù),則要按垂直方向進(jìn)行轉(zhuǎn)換。據(jù),則要按垂直方向進(jìn)行轉(zhuǎn)換。 要特別說明的是要特別說明的是:類型自動(dòng)轉(zhuǎn)換是:類型自動(dòng)轉(zhuǎn)換是根據(jù)需要逐步完成根據(jù)需要逐步完成

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論