




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第3 3章章 數(shù)據(jù)類型、運(yùn)算符、數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、順序結(jié)構(gòu)表達(dá)式、順序結(jié)構(gòu)第第3章章 數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、順序結(jié)構(gòu)順序結(jié)構(gòu)3.1 一個(gè)簡(jiǎn)單程序的例子一個(gè)簡(jiǎn)單程序的例子3.2 數(shù)據(jù)類型數(shù)據(jù)類型3.3 標(biāo)識(shí)符、常量與變量、宏定義標(biāo)識(shí)符、常量與變量、宏定義3.4 整數(shù)類型整數(shù)類型3.5 浮點(diǎn)數(shù)類型浮點(diǎn)數(shù)類型3.6 字符類型字符類型3.7 變量定義及初始化變量定義及初始化3.8 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算第第3章章 數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、順序結(jié)構(gòu)順序結(jié)構(gòu)3.9 算術(shù)運(yùn)算符及其表達(dá)式算術(shù)運(yùn)算符及其表達(dá)式3.
2、10 賦值運(yùn)算符及其表達(dá)式賦值運(yùn)算符及其表達(dá)式3.11 順序運(yùn)算符及其表達(dá)式順序運(yùn)算符及其表達(dá)式3.12 位運(yùn)算符及其表達(dá)式位運(yùn)算符及其表達(dá)式3.13 語句概述語句概述3.14 輸入、輸出輸入、輸出3.15 程序的錯(cuò)誤類型程序的錯(cuò)誤類型3.16 調(diào)試與測(cè)試調(diào)試與測(cè)試 第第3章章 數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、順序結(jié)構(gòu)順序結(jié)構(gòu)3.1 一個(gè)簡(jiǎn)單程序的例子一個(gè)簡(jiǎn)單程序的例子3.2 數(shù)據(jù)類型數(shù)據(jù)類型3.3 標(biāo)識(shí)符、常量與變量、宏定義標(biāo)識(shí)符、常量與變量、宏定義3.4 整數(shù)類型整數(shù)類型3.5 浮點(diǎn)數(shù)類型浮點(diǎn)數(shù)類型3.6 字符類型字符類型3.7 變量定義及初始化變量定義及初始化3.8
3、各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算一個(gè)一個(gè)簡(jiǎn)單程序的例子簡(jiǎn)單程序的例子華氏溫度華氏溫度 攝氏溫度攝氏溫度算法:算法: 1.1.輸入一個(gè)華氏溫度輸入一個(gè)華氏溫度f f 2.2.轉(zhuǎn)換計(jì)算轉(zhuǎn)換計(jì)算: : c - (f-32)c - (f-32)* * 5/9 5/9 3. 3.輸出攝氏溫度輸出攝氏溫度c c一個(gè)一個(gè)簡(jiǎn)單程序的例子簡(jiǎn)單程序的例子#include int main( ) double f, c; scanf(%lf,&f); c = (f-32)*5/9; printf(f=%f, c=%fn,f,c); return 0;輸入轉(zhuǎn)換計(jì)算輸出程序運(yùn)行時(shí),輸入的程序
4、運(yùn)行時(shí),輸入的120放到變量放到變量f中中計(jì)算的結(jié)果計(jì)算的結(jié)果48.888889放到變量放到變量c中中第第3章章 數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、順序結(jié)構(gòu)順序結(jié)構(gòu)3.1 一個(gè)簡(jiǎn)單程序的例子一個(gè)簡(jiǎn)單程序的例子3.2 數(shù)據(jù)類型數(shù)據(jù)類型3.3 標(biāo)識(shí)符、常量與變量、宏定義標(biāo)識(shí)符、常量與變量、宏定義3.4 整數(shù)類型整數(shù)類型3.5 浮點(diǎn)數(shù)類型浮點(diǎn)數(shù)類型3.6 字符類型字符類型3.7 變量定義及初始化變量定義及初始化3.8 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算數(shù)據(jù)類型數(shù)據(jù)類型 程序程序 = 數(shù)據(jù)數(shù)據(jù) + 代碼代碼 所有數(shù)據(jù)都具有確定的數(shù)據(jù)類型所有數(shù)據(jù)都具有確定的數(shù)據(jù)類型
5、(data type) C 語言是靜態(tài)類型語言語言是靜態(tài)類型語言數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)據(jù)數(shù)據(jù) 類型類型基本類型基本類型整數(shù)類型整數(shù)類型char char int int shortshortlonglongunsigned charunsigned charunsigned shortunsigned shortunsigned intunsigned intunsigned longunsigned longlong long long long 實(shí)數(shù)類型實(shí)數(shù)類型floatfloatdoubledoublelong double算術(shù)類型算術(shù)類型枚舉類型枚舉類型指針類型指針類型無值類型無值類型v
6、oidvoid構(gòu)造類型構(gòu)造類型數(shù)組類型數(shù)組類型結(jié)構(gòu)類型結(jié)構(gòu)類型聯(lián)合類型聯(lián)合類型數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)類型決定:數(shù)據(jù)類型決定:存儲(chǔ)空間的大小、數(shù)據(jù)值的表示范圍存儲(chǔ)空間的大小、數(shù)據(jù)值的表示范圍允許的操作種類允許的操作種類 常量、變量、表達(dá)式、函數(shù)等都有確定常量、變量、表達(dá)式、函數(shù)等都有確定的數(shù)據(jù)類型。一旦確定,就不會(huì)改變。的數(shù)據(jù)類型。一旦確定,就不會(huì)改變。數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)據(jù)存放在存儲(chǔ)器中,存儲(chǔ)器以字節(jié)為數(shù)據(jù)存放在存儲(chǔ)器中,存儲(chǔ)器以字節(jié)為最小存儲(chǔ)單元,一個(gè)字節(jié)最小存儲(chǔ)單元,一個(gè)字節(jié)( (bytebyte) )由由8 8個(gè)二個(gè)二進(jìn)制位進(jìn)制位( (bitbit) )組成。數(shù)據(jù)按其所需的存儲(chǔ)組成。數(shù)據(jù)按
7、其所需的存儲(chǔ)單元和組織形式不同,分成不同數(shù)據(jù)類單元和組織形式不同,分成不同數(shù)據(jù)類型。型。 二進(jìn)制的知識(shí)二進(jìn)制的知識(shí)第第3章章 數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、順序結(jié)構(gòu)順序結(jié)構(gòu)3.1 一個(gè)簡(jiǎn)單程序的例子一個(gè)簡(jiǎn)單程序的例子3.2 數(shù)據(jù)類型數(shù)據(jù)類型3.3 標(biāo)識(shí)符、常量與變量、宏定義標(biāo)識(shí)符、常量與變量、宏定義3.4 整數(shù)類型整數(shù)類型3.5 浮點(diǎn)數(shù)類型浮點(diǎn)數(shù)類型3.6 字符類型字符類型3.7 變量定義及初始化變量定義及初始化3.8 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量、宏C語言的字符集語言的字符集 a b c d e f g h
8、 I j k l m a b c d e f g h I j k l m n o p q r s t u v w x y z n o p q r s t u v w x y z A B C D E F G H I J K L M A B C D E F G H I J K L M N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 !” # % & # % & ( ) ( )* * + + ,- . / :- . / : ; ? _ | ; ? _
9、 | 共共9191個(gè)字符個(gè)字符 另外另外, ,字符串中還允許出現(xiàn)中文字符。字符串中還允許出現(xiàn)中文字符。標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符標(biāo)識(shí)符 用來標(biāo)識(shí)變量名、符號(hào)常量名、數(shù)組名、函數(shù)用來標(biāo)識(shí)變量名、符號(hào)常量名、數(shù)組名、函數(shù)名、文件名等的字符序列稱為名、文件名等的字符序列稱為標(biāo)識(shí)符標(biāo)識(shí)符。 標(biāo)識(shí)符由標(biāo)識(shí)符由字母字母、數(shù)字?jǐn)?shù)字和和下劃線下劃線組成,且由字母組成,且由字母和下劃線開頭。和下劃線開頭。 例如:例如:namename、s01s01、_total_total、_123_123等都是合法等都是合法的標(biāo)識(shí)符,而的標(biāo)識(shí)符,而12acd12acd、R.RebinR.Rebin、$
10、12.5$12.5等都是等都是不合法的。另外組成標(biāo)識(shí)符的大寫字母與小寫不合法的。另外組成標(biāo)識(shí)符的大寫字母與小寫字母是不同的。字母是不同的。 例如:例如:_ABC_ABC與與_abc_abc是兩個(gè)不同的標(biāo)識(shí)符。是兩個(gè)不同的標(biāo)識(shí)符。標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符命名標(biāo)識(shí)符命名 命名要命名要“見名知意見名知意”,通過變量名就知道變量,通過變量名就知道變量的含義。這樣可提高程序的可讀性。通常應(yīng)選的含義。這樣可提高程序的可讀性。通常應(yīng)選擇能表示數(shù)據(jù)含義的英文單詞(或縮寫)作變擇能表示數(shù)據(jù)含義的英文單詞(或縮寫)作變量名。量名。 例如例如: name(姓名)、(姓名)、gender(性
11、別)、(性別)、 age (年齡)、(年齡)、salary(工資)。(工資)。標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量、宏 標(biāo)識(shí)符分為兩類:標(biāo)識(shí)符分為兩類: 1. 1. 用戶自定義標(biāo)識(shí)符用戶自定義標(biāo)識(shí)符 2. 2. 系統(tǒng)定義的標(biāo)識(shí)符系統(tǒng)定義的標(biāo)識(shí)符( (稱為關(guān)鍵字或保留字稱為關(guān)鍵字或保留字) ) 用戶自定義標(biāo)識(shí)符不能與關(guān)鍵字相同。用戶自定義標(biāo)識(shí)符不能與關(guān)鍵字相同。 標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量、宏 關(guān)鍵字關(guān)鍵字 C C語言定義了一些具有特定意義的單詞作語言定義了一些具有特定意義的單詞作關(guān)鍵字關(guān)鍵字( (又叫又叫保留字保留字) )。對(duì)于關(guān)鍵字,用戶只能嚴(yán)格按。對(duì)于關(guān)鍵字,用戶只能嚴(yán)格
12、按規(guī)定使用而不能作為它用。所有關(guān)鍵字都用小規(guī)定使用而不能作為它用。所有關(guān)鍵字都用小寫,且必須嚴(yán)格按定義拼寫。寫,且必須嚴(yán)格按定義拼寫。C C語言的關(guān)鍵字較語言的關(guān)鍵字較少,只有少,只有3030多個(gè)。多個(gè)。標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量、宏 關(guān)鍵字關(guān)鍵字(p378)(p378) auto break case char constcontinue default do double elseenum extern float for gotoif int long register return short signed sizeof static structswitch typed
13、ef union unsigned void volatile while 等等重要提示重要提示 使用標(biāo)識(shí)符時(shí),不要忘了大小寫字使用標(biāo)識(shí)符時(shí),不要忘了大小寫字母之間的區(qū)別!母之間的區(qū)別!#include int main() double celsius, fahr; scanf(%lf,&fahr); celsius = 5 * (fahr - 32) / 9; printf(fahr = %f, celsius = %fn, fahr, celsius); return 0;標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量、宏定義定義變量變量fahr和和celsius為為double型型輸
14、入數(shù)據(jù)存放到變量輸入數(shù)據(jù)存放到變量fahr計(jì)算計(jì)算celsius的值的值輸出輸出fahr和和celsius的的值值標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量、宏 程序程序=數(shù)據(jù)數(shù)據(jù)+代碼代碼 數(shù)據(jù)數(shù)據(jù)是計(jì)算機(jī)程序處理加工的對(duì)象。是計(jì)算機(jī)程序處理加工的對(duì)象。double celsius, fahr; fahr = 100.0;celsius = 5 * (fahr - 32) / 9; 在計(jì)算機(jī)高級(jí)語言中,數(shù)據(jù)有兩種表現(xiàn)形式:在計(jì)算機(jī)高級(jí)語言中,數(shù)據(jù)有兩種表現(xiàn)形式: 常量:在程序運(yùn)行過程中,其值不能被改變。常量:在程序運(yùn)行過程中,其值不能被改變。 例如,例如,100.0,5,32,9 變量:在程序
15、運(yùn)行過程中,其值可以被改變。變量:在程序運(yùn)行過程中,其值可以被改變。 如:如:double celsius,fahr; fahr=123.5;標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量、宏 變量:變量:變量代表一個(gè)命名的存儲(chǔ)單元,具有存儲(chǔ)數(shù)據(jù)的能變量代表一個(gè)命名的存儲(chǔ)單元,具有存儲(chǔ)數(shù)據(jù)的能力。力。 變量名變量名: 用標(biāo)識(shí)符表示用標(biāo)識(shí)符表示 變量值變量值: 是數(shù)值是數(shù)值,存儲(chǔ)單元中的內(nèi)容,在機(jī)器內(nèi)部用二存儲(chǔ)單元中的內(nèi)容,在機(jī)器內(nèi)部用二進(jìn)制表示進(jìn)制表示 存儲(chǔ)單元:由變量的數(shù)據(jù)類型和在內(nèi)存中的位置確定存儲(chǔ)單元:由變量的數(shù)據(jù)類型和在內(nèi)存中的位置確定 在程序運(yùn)行過程中,變量的值是可以改變的。在程序運(yùn)行過程
16、中,變量的值是可以改變的。 300變量值變量名存儲(chǔ)單元weightweightint weight=300;標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量、宏 變量定義的一般形式:變量定義的一般形式: 數(shù)據(jù)類型名數(shù)據(jù)類型名 變量名列表;變量名列表; 例如:例如:int s; /定義整型變量定義整型變量float x; /定義單精度浮點(diǎn)型變量定義單精度浮點(diǎn)型變量double area, length; /定義雙精度浮點(diǎn)型變量定義雙精度浮點(diǎn)型變量 定義變量時(shí)要指定變量名和數(shù)據(jù)類型定義變量時(shí)要指定變量名和數(shù)據(jù)類型 用變量名代表內(nèi)存中的一個(gè)存儲(chǔ)單元用變量名代表內(nèi)存中的一個(gè)存儲(chǔ)單元 存儲(chǔ)單元的大小存儲(chǔ)單元的大
17、小(字節(jié)數(shù)字節(jié)數(shù))由變量的數(shù)據(jù)類型決定由變量的數(shù)據(jù)類型決定標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量、宏 變量必須先變量必須先定義定義,后,后使用使用。#include int main( ) double celsius, fahr; scanf(%lf,&fahr); celsius = 5 * (fahr - 32) / 9; printf(fahr = %f, celsius = %fn, fahr, celsius); return 0; int price=10; 定義一個(gè)變量定義一個(gè)變量,變量名叫變量名叫price,類型是類型是 int,初始值是初始值是10。 這里的這里的
18、“=”是一個(gè)賦值運(yùn)算符,表示將是一個(gè)賦值運(yùn)算符,表示將“=”右邊的右邊的值賦給左邊的變量。值賦給左邊的變量。 在定義變量時(shí),就對(duì)變量進(jìn)行賦值,這時(shí)候的賦值又在定義變量時(shí),就對(duì)變量進(jìn)行賦值,這時(shí)候的賦值又叫做初始化。叫做初始化。 int price; price=10;標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量、宏 int a=10,b=20; a=b; /將變量將變量b的值賦給變量的值賦給變量a,a,b均為均為20 b=a; /將變量將變量a的值賦給變量的值賦給變量b,a,b均為均為10C語言中的變量代表存儲(chǔ)數(shù)據(jù)的存儲(chǔ)單元語言中的變量代表存儲(chǔ)數(shù)據(jù)的存儲(chǔ)單元標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量
19、、宏標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量、宏 數(shù)學(xué)中的變量代表未知數(shù)數(shù)學(xué)中的變量代表未知數(shù) 數(shù)學(xué)中:數(shù)學(xué)中:x = x+1 (錯(cuò)誤的錯(cuò)誤的) C語言中:語言中: int x=10; x = x+1; (將變量將變量x所代表的存儲(chǔ)單元中的值讀取所代表的存儲(chǔ)單元中的值讀取出來,增加出來,增加1,再存放到存儲(chǔ)單元中。,再存放到存儲(chǔ)單元中。)10 11x = x+1x x int i;int j;j=i+10;請(qǐng)問請(qǐng)問 j的值是多少?的值是多少?標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量、宏int i=0;int j;j=i+10;所有變量第一次出現(xiàn)在賦值運(yùn)算符的右邊之所有變量第一次出現(xiàn)在賦值運(yùn)算符
20、的右邊之前應(yīng)該被賦值一次前應(yīng)該被賦值一次.標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量、宏 常量:常量:指在程序運(yùn)行過程中值不變的量 常數(shù):常數(shù):例如,例如,32,3.14,“ABCD”,A 在在C C語言中,不同類型的常量有不同的表示方法。語言中,不同類型的常量有不同的表示方法。 符號(hào)常量:符號(hào)常量:在程序中為了能明確表示常量的含義,提高程序的可閱讀在程序中為了能明確表示常量的含義,提高程序的可閱讀性,常用一個(gè)符號(hào)名稱代表一個(gè)常量。性,常用一個(gè)符號(hào)名稱代表一個(gè)常量。 #include #define PRICE 30 /注意該行末尾沒有分號(hào)注意該行末尾沒有分號(hào) / #define是是預(yù)編譯命令,
21、稱為宏預(yù)編譯命令,稱為宏( (macromacro) )定義定義。作用是作用是符號(hào)替換符號(hào)替換。 int main( ) printf( “total=%d”,PRICE*10 ); return 0; 在對(duì)程序進(jìn)行編譯之前,系統(tǒng)會(huì)進(jìn)行預(yù)處理,將所有在對(duì)程序進(jìn)行編譯之前,系統(tǒng)會(huì)進(jìn)行預(yù)處理,將所有PRICE符號(hào)常量全部替換為符號(hào)常量全部替換為30。預(yù)編譯后。預(yù)編譯后程序變成:程序變成: int main( ) printf( “total=%d”,30*10 ); return 0; 標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量、宏#include int main( ) float l,s,r,v
22、; r =3.5; l=2.0* *r; s= *r*r; v=4.0/3* *r*r*r; printf(l=%10.4fn,l); printf(s=%10.4fn,s); printf(v=%10.4fn,v); return 0;#define PI 3.1415926 PI3.14159263.14159263.1415926注意事項(xiàng)注意事項(xiàng): 符號(hào)常量一定要先定義再使用 符號(hào)常量的值是不能改變的 符號(hào)常量在程序中可以直接引用而不必作任何說明,因?yàn)榫幾g程序能夠根據(jù)常量的書寫形式辨別其數(shù)據(jù)類型。PIPI標(biāo)識(shí)符、常量與變量、宏標(biāo)識(shí)符、常量與變量、宏 定義常量的另一種方法:定義常量的另一種
23、方法: const double pi=3. 1415926535; (C99標(biāo)準(zhǔn)標(biāo)準(zhǔn)!) #define PI 3.1415926 兩種方法的區(qū)別:兩種方法的區(qū)別: PI不分配存儲(chǔ)單元,不分配存儲(chǔ)單元,pi與變量一樣分配存儲(chǔ)單元,與變量一樣分配存儲(chǔ)單元,但但pi的值不允許修改。的值不允許修改。第第3章章 數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、順序結(jié)構(gòu)順序結(jié)構(gòu)3.1 一個(gè)簡(jiǎn)單程序的例子一個(gè)簡(jiǎn)單程序的例子3.2 數(shù)據(jù)類型數(shù)據(jù)類型3.3 標(biāo)識(shí)符、常量與變量、宏定義標(biāo)識(shí)符、常量與變量、宏定義3.4 整數(shù)類型整數(shù)類型3.5 浮點(diǎn)數(shù)類型浮點(diǎn)數(shù)類型3.6 字符類型字符類型3.7 變量定義及初
24、始化變量定義及初始化3.8 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算整數(shù)類型整數(shù)類型整型常數(shù)的表示方法整型常數(shù)的表示方法有三種表示形式:有三種表示形式:(1 1)十進(jìn)制:)十進(jìn)制: 與數(shù)學(xué)中十進(jìn)制寫法相同與數(shù)學(xué)中十進(jìn)制寫法相同 如如 6 6、-31-31、101 101 等都是合法的。等都是合法的。(2 2)八進(jìn)制:)八進(jìn)制: 用用0 0開始的由開始的由0707構(gòu)成的數(shù)構(gòu)成的數(shù) 如如 07770777、012 012 等都是合法的。等都是合法的。(3 3)十六進(jìn)制:用)十六進(jìn)制:用0 x0 x或或0X0X開始的由開始的由 0,1,2,0,1,2,9,a,9,a,f (,f (或或
25、大寫大寫) )構(gòu)成的數(shù)構(gòu)成的數(shù) 如如 0 x1230 x123、0 xffFF 0 xffFF 等都是合法等都是合法 的整型常量。的整型常量。整數(shù)類型整數(shù)類型整型常數(shù)的表示方法整型常數(shù)的表示方法 還有一種被稱為長(zhǎng)整型常數(shù)的整型常數(shù),其表還有一種被稱為長(zhǎng)整型常數(shù)的整型常數(shù),其表示形式是在整型常數(shù)的三種表示形式后加上字示形式是在整型常數(shù)的三種表示形式后加上字母母l l或或L L。此外,還有。此外,還有LL,LULL,LU等多種形式。等多種形式。 如:如: 6l6l或或6L 012l6L 012l或或012L 012L 0 x12l 0 x12l或或0 x12L 012LU0 x12L 012LU或
26、或0 x12ul0 x12ul 123LL 0157LLU 123LL 0157LLU等。等。整數(shù)類型整數(shù)類型整型數(shù)據(jù)在內(nèi)存中的存放方式整型數(shù)據(jù)在內(nèi)存中的存放方式 數(shù)據(jù)在內(nèi)存中是以二進(jìn)制補(bǔ)碼數(shù)據(jù)在內(nèi)存中是以二進(jìn)制補(bǔ)碼(complement)形形式表示的。式表示的。 例如例如(32位機(jī)器位機(jī)器): int i; i=10; int j;j=-100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 i 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 j 符號(hào)位1 1 1 1 1 1 1 1 0 1 1 0
27、1 1 1 1 符號(hào)位整數(shù)類型整數(shù)類型原碼:符號(hào)位原碼:符號(hào)位+絕對(duì)值轉(zhuǎn)換后的二進(jìn)制絕對(duì)值轉(zhuǎn)換后的二進(jìn)制反碼:符號(hào)位反碼:符號(hào)位+絕對(duì)值轉(zhuǎn)換后的二進(jìn)制每位的反絕對(duì)值轉(zhuǎn)換后的二進(jìn)制每位的反補(bǔ)碼:符號(hào)位補(bǔ)碼:符號(hào)位+(反碼(反碼+1)一般帶符號(hào)的整數(shù)采用補(bǔ)碼表示方法。一般帶符號(hào)的整數(shù)采用補(bǔ)碼表示方法。整數(shù)類型整數(shù)類型 類 型 含 義 占存儲(chǔ)空間 數(shù) 值 的 范 圍 char 字符1個(gè)字節(jié) -128127-128127int 整型4個(gè)字節(jié)-21474836482147483647-21474836482147483647long 長(zhǎng)整型4個(gè)字節(jié)-21474836482147483647-214748
28、36482147483647 僅以僅以32位編譯器為例!位編譯器為例!long long 長(zhǎng)長(zhǎng)整型長(zhǎng)長(zhǎng)整型8個(gè)字節(jié)個(gè)字節(jié)-263263-1short 短整型短整型2個(gè)字節(jié)個(gè)字節(jié)-3276832767unsigned的范圍?的范圍?二進(jìn)制轉(zhuǎn)換輔助工具 http:/ 這由編譯系統(tǒng)自己決定。這由編譯系統(tǒng)自己決定。C標(biāo)標(biāo)準(zhǔn)只規(guī)定了準(zhǔn)只規(guī)定了long 類型的表示范圍不小于類型的表示范圍不小于int,但,但也允許它們表示范圍相同。也允許它們表示范圍相同。short類型的表示范類型的表示范圍不大于圍不大于int型。型。u在不同編譯器中,數(shù)據(jù)類型所占的字節(jié)數(shù)可能在不同編譯器中,數(shù)據(jù)類型所占的字節(jié)數(shù)可能是不同的
29、。如是不同的。如:GCC:GCC中中intint類型是類型是4 4個(gè)字節(jié)個(gè)字節(jié), , 而早而早期的期的TCTC中的中的intint是是2 2個(gè)字節(jié)。個(gè)字節(jié)。usizeof(sizeof(類型名)或類型名)或 sizeof(sizeof(表達(dá)式表達(dá)式) ) 返回該類型在使用編譯器中的所占字節(jié)數(shù)返回該類型在使用編譯器中的所占字節(jié)數(shù)如如:GCC:GCC中中sizeof(int)sizeof(int)是是 4 4,TCTC中中sizeof(int)sizeof(int)是是 2 2整數(shù)類型整數(shù)類型 如果所表示的數(shù)據(jù)都為正數(shù),則可以將變量定義如果所表示的數(shù)據(jù)都為正數(shù),則可以將變量定義“無符號(hào)無符號(hào)”整型
30、:整型: 無符號(hào)基本整型無符號(hào)基本整型 unsigned int 無符號(hào)短整型無符號(hào)短整型 unsigned short int 無符號(hào)長(zhǎng)整型無符號(hào)長(zhǎng)整型 unsigned long int 無符號(hào)雙長(zhǎng)整型無符號(hào)雙長(zhǎng)整型 unsigned long long int 無符號(hào)整型數(shù)據(jù)存儲(chǔ)單元的最高位不表示符號(hào)位無符號(hào)整型數(shù)據(jù)存儲(chǔ)單元的最高位不表示符號(hào)位 有符號(hào)基本整型有符號(hào)基本整型 signed int 有符號(hào)短整型有符號(hào)短整型 signed short int 有符號(hào)長(zhǎng)整型有符號(hào)長(zhǎng)整型 signed long int 有符號(hào)雙長(zhǎng)整型有符號(hào)雙長(zhǎng)整型 signed long long int 有符
31、號(hào)整型數(shù)據(jù)存儲(chǔ)單元的最高位代表符號(hào)位(有符號(hào)整型數(shù)據(jù)存儲(chǔ)單元的最高位代表符號(hào)位(0為正,為正,1為負(fù))為負(fù)) short int a=32767,b=-1; unsigned short int u=65535; 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1a0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1b1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1符號(hào)位1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1ua=32767;b=-1;u=65535;在32位機(jī)中,變量a、b、u的實(shí)際存儲(chǔ)整數(shù)類型整數(shù)類型整型變量的定義和使用整型變量的
32、定義和使用 例例: #include int main() int a,b,c,d; /變量的定義變量的定義 a=12;b=-24; /變量的賦值變量的賦值 c=a+b; d=a-b; printf(a+b=%d,a-b=%dn,c,d); return 0; 運(yùn)行結(jié)果為運(yùn)行結(jié)果為: a+b=-12,a-b=36變量在使用之前必須先定義!a整數(shù)類型整數(shù)類型整型變量的溢出整型變量的溢出(overflow)(overflow) 一個(gè)一個(gè)intint型的變量最大允許值為型的變量最大允許值為INT_MAX(INT_MAX(定義在定義在limits.hlimits.h中中) ),最小為,最小為INT_M
33、ININT_MIN,如果超出范圍,如果超出范圍就會(huì)出現(xiàn)所謂溢出的運(yùn)行時(shí)錯(cuò)誤(就會(huì)出現(xiàn)所謂溢出的運(yùn)行時(shí)錯(cuò)誤(run-time run-time errorerror)。)。 如在一個(gè)如在一個(gè)3232位系統(tǒng)中,一個(gè)位系統(tǒng)中,一個(gè)intint類型的數(shù)據(jù)最類型的數(shù)據(jù)最大值為大值為21474836472147483647,如果再加上,如果再加上1 1,就會(huì)溢出,就會(huì)溢出, , 值變?yōu)橹底優(yōu)?2147483648-2147483648。整數(shù)類型整數(shù)類型整型變量的溢出整型變量的溢出 例:例: #include int main() int a,b; a=2147483647; b=a+1; printf(“
34、a=%d,b=%dn”,a,b); return 0; 3232位系統(tǒng)中的運(yùn)行結(jié)果為位系統(tǒng)中的運(yùn)行結(jié)果為: : a=a=21474836472147483647,b=-,b=-2147483642147483648 8整數(shù)類型整數(shù)類型整型變量的溢出整型變量的溢出 上上例:例: 如在如在3232位系統(tǒng)中位系統(tǒng)中 a: 7f ff ff ffa: 7f ff ff ff b: 80 00 00 00 b: 80 00 00 002147483647-2147483648運(yùn)行時(shí),系統(tǒng)不會(huì)給出溢出提示!運(yùn)行時(shí),系統(tǒng)不會(huì)給出溢出提示!防止溢出的發(fā)生是程序員的責(zé)任!防止溢出的發(fā)生是程序員的責(zé)任!重要提示重
35、要提示 編程時(shí)必須保證所有整型變量在任編程時(shí)必須保證所有整型變量在任何時(shí)候都沒有超出數(shù)據(jù)類型的取值何時(shí)候都沒有超出數(shù)據(jù)類型的取值范圍!范圍!第第3章章 數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、順序結(jié)構(gòu)順序結(jié)構(gòu)3.1 一個(gè)簡(jiǎn)單程序的例子一個(gè)簡(jiǎn)單程序的例子3.2 數(shù)據(jù)類型數(shù)據(jù)類型3.3 標(biāo)識(shí)符、常量與變量、宏定義標(biāo)識(shí)符、常量與變量、宏定義3.4 整數(shù)類型整數(shù)類型3.5 浮點(diǎn)數(shù)類型浮點(diǎn)數(shù)類型3.6 字符類型字符類型3.7 變量定義及初始化變量定義及初始化3.8 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算浮點(diǎn)型類型浮點(diǎn)型類型 浮點(diǎn)型常數(shù)浮點(diǎn)型常數(shù),有兩種表示形式:,有兩種表示形式
36、: (1)十進(jìn)制小數(shù)形式)十進(jìn)制小數(shù)形式 例如:例如:0.618、108.02、-1.414、 108.0、0.0等,這與等,這與數(shù)學(xué)中表示實(shí)數(shù)的方法相同;數(shù)學(xué)中表示實(shí)數(shù)的方法相同; (2)指數(shù)形式)指數(shù)形式例如:例如:108E2(或(或108e2)表示實(shí)數(shù))表示實(shí)數(shù)108102 ; -16.578E5(-16.578e5)表示實(shí)數(shù))表示實(shí)數(shù)-16.5781050.1234E-6 ,表示實(shí)數(shù),表示實(shí)數(shù)0.123410-6浮點(diǎn)型類型浮點(diǎn)型類型 浮點(diǎn)型浮點(diǎn)型 單精度單精度( float型型 ) 雙精度雙精度( double型型 ) 長(zhǎng)雙精度長(zhǎng)雙精度( long double型型 ) 例如:定義浮點(diǎn)
37、型變量例如:定義浮點(diǎn)型變量 float f1,f2; double d1,d2; long double ld;浮點(diǎn)型類型浮點(diǎn)型類型 類 型 占存儲(chǔ)空間 有效數(shù)位數(shù) 數(shù) 值 范 圍 float4個(gè)字節(jié)6 7-3.4-3.41010-38-38 3.4 3.410103838 double8個(gè)字節(jié)15 16-1.7-1.71010-308-308 1.7 1.71010308308 long double16個(gè)字節(jié)18 19-1.2-1.21010-4932-4932 1.2 1.2101049324932 僅以某種機(jī)器為例!僅以某種機(jī)器為例!long double一般不支持!一般不支持!浮點(diǎn)型
38、類型浮點(diǎn)型類型 float和和double在計(jì)算機(jī)的存儲(chǔ)單元中是以指數(shù)形在計(jì)算機(jī)的存儲(chǔ)單元中是以指數(shù)形式存放的,即,把一個(gè)浮點(diǎn)數(shù)用符號(hào)位、指數(shù)和式存放的,即,把一個(gè)浮點(diǎn)數(shù)用符號(hào)位、指數(shù)和尾數(shù)來表示。指數(shù)部分和尾數(shù)部分各占多少位在尾數(shù)來表示。指數(shù)部分和尾數(shù)部分各占多少位在C標(biāo)準(zhǔn)中并無具體規(guī)定,由編譯系統(tǒng)自己決定。標(biāo)準(zhǔn)中并無具體規(guī)定,由編譯系統(tǒng)自己決定。符號(hào)位符號(hào)位指數(shù)指數(shù)尾數(shù)尾數(shù)長(zhǎng)度長(zhǎng)度float1(bit)8(bit)23(bit)32(bit)double1(bit)11(bit)52(bit)64(bit)浮點(diǎn)型類型浮點(diǎn)型類型浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放方式存放方式 一個(gè)浮
39、點(diǎn)一個(gè)浮點(diǎn)floatfloat型數(shù)據(jù)一般在內(nèi)存中占型數(shù)據(jù)一般在內(nèi)存中占4 4個(gè)字節(jié)。與整個(gè)字節(jié)。與整型數(shù)據(jù)的存儲(chǔ)方式不同,浮點(diǎn)型數(shù)據(jù)是按照指數(shù)形式型數(shù)據(jù)的存儲(chǔ)方式不同,浮點(diǎn)型數(shù)據(jù)是按照指數(shù)形式存儲(chǔ)的。分成尾數(shù)和指數(shù)兩部分。存儲(chǔ)的。分成尾數(shù)和指數(shù)兩部分。 x127+c符號(hào)符號(hào) 0/1尾數(shù)部分尾數(shù)部分 M=1.x指數(shù)指數(shù)2c IEEE 754 float表示表示 M 2C : M稱為尾數(shù),稱為尾數(shù),C稱為階碼稱為階碼 M和和C均采用二進(jìn)制表示。均采用二進(jìn)制表示。 float 共共32位,在內(nèi)存的存放形式:位,在內(nèi)存的存放形式: 最高位:符號(hào)位,最高位:符號(hào)位, 指數(shù)(指數(shù)(8位):位):127+C
40、 尾數(shù)(尾數(shù)(23位):位):M除去最左邊的除去最左邊的1后的部分后的部分例例: 12.5 = (1100.1)2 = (1.1001)2 * 23 表示為表示為: 01000001 01001000 00000000 00000000浮點(diǎn)型類型浮點(diǎn)型類型 例例: -0.25 = -(0.01)2 = -(1.0)2 * 2-2 表示為表示為: 10111110 10000000 00000000 00000000 浮點(diǎn)型類型浮點(diǎn)型類型 IEEE 754 double表示表示 M 2C :M稱為尾數(shù),稱為尾數(shù),C稱為階碼稱為階碼 ,M和和C均采用二進(jìn)均采用二進(jìn)制表示。制表示。 double 共
41、共64位,在內(nèi)存的存放形式:位,在內(nèi)存的存放形式: 最高位:符號(hào)位最高位:符號(hào)位 指數(shù)(指數(shù)(11位):位):1023+C 尾數(shù)(尾數(shù)(52位):位):M除去最左邊的除去最左邊的1后的部分后的部分浮點(diǎn)型類型浮點(diǎn)型類型浮點(diǎn)型類型浮點(diǎn)型類型 例:例:double型浮點(diǎn)數(shù)型浮點(diǎn)數(shù)38414.4的內(nèi)存存儲(chǔ)形式:的內(nèi)存存儲(chǔ)形式: 1、把整數(shù)部和小數(shù)部分開處理、把整數(shù)部和小數(shù)部分開處理:(1)整數(shù))整數(shù)部分的部分的十六進(jìn)制十六進(jìn)制表示表示:960E(1001011000001110)。(2)小數(shù)的處理)小數(shù)的處理: 0.4=0.01100110011001100110 38414.4的二進(jìn)制表示:的二進(jìn)制
42、表示: 1001011000001110.0110011001100110011001100110011001100110. 2、以指數(shù)形式表示:四舍五入取、以指數(shù)形式表示:四舍五入取53位位 1.0010110000011100110011001100110011001100110011001101*215 (小數(shù)點(diǎn)前面小數(shù)點(diǎn)前面只有一位,并且必只有一位,并且必為為1,該該1為隱藏值為隱藏值,在內(nèi)存是不存儲(chǔ)的在內(nèi)存是不存儲(chǔ)的) 3、尾數(shù)為小數(shù)點(diǎn)后的、尾數(shù)為小數(shù)點(diǎn)后的52位,指數(shù)為位,指數(shù)為15,將指數(shù)用二進(jìn)制,將指數(shù)用二進(jìn)制 表示。表示。 指數(shù)占指數(shù)占11位,將指數(shù)先位,將指數(shù)先加上加上10
43、23再轉(zhuǎn)化為二進(jìn)制表示。再轉(zhuǎn)化為二進(jìn)制表示。 15+1023=1038,其二進(jìn)制表示為:其二進(jìn)制表示為:100 00001110 4、符號(hào)位為、符號(hào)位為0(正數(shù)),將三部分(正數(shù)),將三部分合在一起(尾數(shù)最高位的合在一起(尾數(shù)最高位的1不要):不要):01000000 11100010 11000001 11001100 11001100 11001100 11001100 11001101按字節(jié)倒序存儲(chǔ)的十六進(jìn)制數(shù)就是:按字節(jié)倒序存儲(chǔ)的十六進(jìn)制數(shù)就是: CD CC CC CC CC C1 E2 40 一個(gè)基本類型數(shù)據(jù)的幾個(gè)字節(jié)的在內(nèi)存中存放次序,一個(gè)基本類型數(shù)據(jù)的幾個(gè)字節(jié)的在內(nèi)存中存放次序,
44、不同不同CPU可能不同??赡懿煌?。如:如:Intel CPU:稱為:稱為 little_endian(小端格式)(小端格式)浮點(diǎn)型類型浮點(diǎn)型類型 地址編號(hào)地址編號(hào)0 x40000000CD0 x40000001CC0 x40000002CC0 x40000003CC0 x40000004CC0 x40000005C10 x40000006E20 x4000000740低地址中存放的是數(shù)據(jù)的低字節(jié);高地址存放的是數(shù)據(jù)的高字節(jié)。浮點(diǎn)型類型浮點(diǎn)型類型浮點(diǎn)型數(shù)據(jù)的表示誤差浮點(diǎn)型數(shù)據(jù)的表示誤差 由于浮點(diǎn)型變量存放在有限的幾個(gè)字節(jié)的存儲(chǔ)由于浮點(diǎn)型變量存放在有限的幾個(gè)字節(jié)的存儲(chǔ)單元中,所以能提供的有效數(shù)字總
45、是有限的,單元中,所以能提供的有效數(shù)字總是有限的,因此有效位以外的數(shù)字將被舍去,由此會(huì)產(chǎn)生因此有效位以外的數(shù)字將被舍去,由此會(huì)產(chǎn)生誤差。誤差。 即:即:浮點(diǎn)數(shù)的表示是不精確的浮點(diǎn)數(shù)的表示是不精確的! !浮點(diǎn)型類型浮點(diǎn)型類型浮點(diǎn)型數(shù)據(jù)的誤差浮點(diǎn)型數(shù)據(jù)的誤差例例: :#include int main() double a; a=0.1; printf(a = %.17fn,a); return 0; GCC GCC運(yùn)行結(jié)果為運(yùn)行結(jié)果為: : a = 0.10000000000000001 a = 0.10000000000000001 由于一個(gè)由于一個(gè)doubledouble變量只能保證變量只能
46、保證1616位有效數(shù)字,所以后面位有效數(shù)字,所以后面的數(shù)字是無意義的。的數(shù)字是無意義的。 類似的還有:類似的還有:1.0/31.0/3* *3 3 結(jié)果并不一定等于結(jié)果并不一定等于1 1。浮點(diǎn)型類型浮點(diǎn)型類型浮點(diǎn)型數(shù)據(jù)的誤差浮點(diǎn)型數(shù)據(jù)的誤差 例例: : #include int main() double a,b; b = 2.0e20 + 1.0; a = b - 2.0e20; printf(%f n, a); return 0; GCC GCC運(yùn)行結(jié)果為運(yùn)行結(jié)果為: : 0.000000 浮點(diǎn)型常量的類型浮點(diǎn)型常量的類型 浮點(diǎn)型常量的類型為浮點(diǎn)型常量的類型為double,而不是,而不是f
47、loat。 例如:例如: float a=3.14159; 在編譯時(shí),系統(tǒng)給變量在編譯時(shí),系統(tǒng)給變量a分配分配4個(gè)字節(jié),但對(duì)于浮點(diǎn)個(gè)字節(jié),但對(duì)于浮點(diǎn)型常量型常量3.14159則按照則按照double型(型(8個(gè)字節(jié))處理,系個(gè)字節(jié))處理,系統(tǒng)會(huì)發(fā)出警告統(tǒng)會(huì)發(fā)出警告“warning:truncation from const double to float”,提醒用戶這種轉(zhuǎn)換可能會(huì)損失精,提醒用戶這種轉(zhuǎn)換可能會(huì)損失精度。度。浮點(diǎn)型類型浮點(diǎn)型類型 float f; f=2.45678*4523.65; 系統(tǒng)將系統(tǒng)將2.45678和和4523.65按按double數(shù)據(jù)存儲(chǔ)和運(yùn)算,數(shù)據(jù)存儲(chǔ)和運(yùn)算,得到
48、一個(gè)得到一個(gè)double的乘積,然后取前的乘積,然后取前7位賦值給位賦值給float變變量量 f,這樣做的目的是為了保證計(jì)算結(jié)果更精確。但,這樣做的目的是為了保證計(jì)算結(jié)果更精確。但是運(yùn)算速度降低了??梢栽谑沁\(yùn)算速度降低了??梢栽诟↑c(diǎn)型常量的后面加上浮點(diǎn)型常量的后面加上字符字符f或或F(如如2.45678f、4523.65F),此時(shí)編譯系統(tǒng)會(huì),此時(shí)編譯系統(tǒng)會(huì)按按float處理它們。處理它們。浮點(diǎn)型類型浮點(diǎn)型類型浮點(diǎn)型類型浮點(diǎn)型類型 浮點(diǎn)型變量的溢出浮點(diǎn)型變量的溢出(overflow)(overflow)和下和下溢溢(underflow(underflow) ) 一個(gè)一個(gè)doubledouble型
49、的變量最大絕對(duì)值為型的變量最大絕對(duì)值為DBL_MAX(DBL_MAX(定義在定義在float.hfloat.h中中) )(如:(如:1.7976931348623157e+308),最?。?,最小絕對(duì)值為絕對(duì)值為DBL_MINDBL_MIN(如:(如:2.2250738585072014e-308),),如果超出范圍就會(huì)出現(xiàn)上溢或下溢的錯(cuò)誤情況。如果超出范圍就會(huì)出現(xiàn)上溢或下溢的錯(cuò)誤情況。浮點(diǎn)型類型浮點(diǎn)型類型 上溢上溢 double toobig = DBL_MAX * 100.0; printf(%en, toobig); 32 32位系統(tǒng)中的運(yùn)行結(jié)果可能為位系統(tǒng)中的運(yùn)行結(jié)果可能為: : 1.#
50、INF00e+000 浮點(diǎn)型類型浮點(diǎn)型類型 下溢下溢( (過于接近于過于接近于0)0) double toosmall = DBL_MIN / 1E30; printf(%en, toosmall); 32 32位系統(tǒng)中的運(yùn)行結(jié)果可能為位系統(tǒng)中的運(yùn)行結(jié)果可能為: : 0.000000e+000第第3章章 數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、順序結(jié)構(gòu)順序結(jié)構(gòu)3.1 一個(gè)簡(jiǎn)單程序的例子一個(gè)簡(jiǎn)單程序的例子3.2 數(shù)據(jù)類型數(shù)據(jù)類型3.3 標(biāo)識(shí)符、常量與變量、宏定義標(biāo)識(shí)符、常量與變量、宏定義3.4 整數(shù)類型整數(shù)類型3.5 浮點(diǎn)數(shù)類型浮點(diǎn)數(shù)類型3.6 字符類型字符類型3.7 變量定義及初始
51、化變量定義及初始化3.8 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算字符類型字符類型 字符常數(shù)字符常數(shù) 普通字符:普通字符:用用單引號(hào)單引號(hào)括起的一個(gè)字符,如括起的一個(gè)字符,如a、?、B、5和和*等都是合法的字符常量。等都是合法的字符常量。 a和和A是不同的字符常量。是不同的字符常量。字符型數(shù)據(jù)存儲(chǔ)在內(nèi)存中占一個(gè)字節(jié),字符型數(shù)據(jù)存儲(chǔ)在內(nèi)存中占一個(gè)字節(jié),是以其代碼(是以其代碼(ASCII碼碼)存儲(chǔ)的。存儲(chǔ)的。字符常量 存儲(chǔ)形式 十進(jìn)制表示A01 000 00165a01 100 00197?00 111 11163500 11010153 附錄附錄B,給出給出了常用字符了常用字符與其對(duì)
52、應(yīng)的與其對(duì)應(yīng)的ASCII碼。碼。字符類型字符類型 ASCII - American Standard Code for Information Interchange。 ASCII字符集的大小為字符集的大小為7位,位,MSB為為0。 ASCII字符集包含可打印字符和非打印字符(控字符集包含可打印字符和非打印字符(控制字符)兩類。制字符)兩類。 轉(zhuǎn)義字符:轉(zhuǎn)義字符:在在ASCII碼表中有一些非打印的控制字符碼表中有一些非打印的控制字符,例如例如回車、響鈴、退格回車、響鈴、退格等。為了能夠表示它們,等。為了能夠表示它們,C語言采用在語言采用在反斜杠反斜杠()字符后加其他字符字符后加其他字符的方法來
53、解決。這稱為的方法來解決。這稱為轉(zhuǎn)義序轉(zhuǎn)義序列字符列字符。 轉(zhuǎn)義字符中轉(zhuǎn)義字符中反斜杠反斜杠()后面的字符在編譯時(shí)需要特殊處后面的字符在編譯時(shí)需要特殊處理,不能當(dāng)作普通字符對(duì)待。理,不能當(dāng)作普通字符對(duì)待。 例如,例如,n是在第一個(gè)字符是在第一個(gè)字符反斜杠(反斜杠()后緊跟一個(gè)字后緊跟一個(gè)字符符n,它表示一個(gè)換行字符。,它表示一個(gè)換行字符。 n代表一個(gè)字符(換行符)代表一個(gè)字符(換行符),其,其ASCII為為10。字符類型字符類型字符類型字符類型轉(zhuǎn)義序列轉(zhuǎn)義序列 含含 義義ASCII碼碼 n n 回車換行,將光標(biāo)移至下一行首回車換行,將光標(biāo)移至下一行首10r r 回車,將光標(biāo)移至本行開頭位置回車
54、,將光標(biāo)移至本行開頭位置 13b b 退格,將光標(biāo)左移一格退格,將光標(biāo)左移一格 8t t 水平制表,光標(biāo)移至本行下一水平制表,光標(biāo)移至本行下一tabtab位置位置 9v v 垂直制表符垂直制表符 11f f 換頁,將光標(biāo)移至下一頁開頭位置換頁,將光標(biāo)移至下一頁開頭位置 12aa響鈴響鈴70 0 空字符,其符號(hào)常量名為空字符,其符號(hào)常量名為NULL NULL 0 單引號(hào)字符單引號(hào)字符 39 ”雙引號(hào)字符雙引號(hào)字符34反斜杠字符反斜杠字符92ooo ooo 1 1到到3 3位八進(jìn)制數(shù)所代表的字符位八進(jìn)制數(shù)所代表的字符 xhh xhh 1 1到到2 2位十六進(jìn)制數(shù)所代表的字符位十六進(jìn)制數(shù)所代表的字符
55、 字符類型字符類型字符變量字符變量 字符變量用于存放字符,在內(nèi)存中占字符變量用于存放字符,在內(nèi)存中占1 1字節(jié)。字節(jié)。 字符變量的定義形式如下:字符變量的定義形式如下: char c1char c1,c2c2; 可以把字符常量賦值給字符變量,例如:可以把字符常量賦值給字符變量,例如: c1=c1=a a;c2=c2=b b;字符類型字符類型字符型變量數(shù)據(jù)在內(nèi)存中的存放方式字符型變量數(shù)據(jù)在內(nèi)存中的存放方式 將一個(gè)字符常量存放到一個(gè)字符變量中,其實(shí)將一個(gè)字符常量存放到一個(gè)字符變量中,其實(shí)是存放了該字符的是存放了該字符的ASCIIASCII碼碼( (也稱字符的內(nèi)碼也稱字符的內(nèi)碼) )。 例如:例如:
56、 char c1char c1,c2c2;c1=c1=a a; c2=; c2=b b; c1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 1 0c2 字符類型字符類型#include int main() char c1,c2; c1=97; c2=98; /向字符變量賦整數(shù)值向字符變量賦整數(shù)值 /* c1=a; c2=b; */ printf(“%c,%cn”,c1,c2); /以字符形式輸出以字符形式輸出 printf(“%d,%dn”,c1,c2); /以十進(jìn)制整數(shù)形式輸出以十進(jìn)制整數(shù)形式輸出 return 0; 運(yùn)行的結(jié)果是:運(yùn)行的結(jié)果是: a,b 97,98字符類型字符
57、類型 一個(gè)字符變量中的值,是被當(dāng)成整數(shù)值使用,一個(gè)字符變量中的值,是被當(dāng)成整數(shù)值使用,還是當(dāng)成字符使用,完全看程序員的意愿。還是當(dāng)成字符使用,完全看程序員的意愿。0 1 1 0 0 0 0 1c1a%c%d97字符類型字符類型 例例:大小寫字母的轉(zhuǎn)換大小寫字母的轉(zhuǎn)換 #include int main() char c1,c2; c1=a;c2=b; c1=c1-32; c2=c2-32; printf(%c,%cn,c1,c2); return 0; 運(yùn)行的結(jié)果是:運(yùn)行的結(jié)果是: A,B注意:在ASCII表(P377)中大寫字母排在小寫字母的前面,且兩者間隔有6個(gè)其他字母。從ASCII碼表可
58、以看到每個(gè)小寫字母比它相應(yīng)的大寫字母的ASCII碼值大32。字符常量和變量可以看成是一個(gè)8位的整型數(shù)據(jù)。 所以:c1=a+2;則c1中的值99(即c字符)。字符類型字符類型 字符字符1和整數(shù)和整數(shù)1是不同的概念是不同的概念: 字符字符1只是代表一個(gè)形狀為只是代表一個(gè)形狀為1的符號(hào),的符號(hào),在內(nèi)存中以在內(nèi)存中以ASCII碼碼(49)二進(jìn)制二進(jìn)制形式存儲(chǔ),占形式存儲(chǔ),占1個(gè)字節(jié)個(gè)字節(jié) 整數(shù)整數(shù)1是以整數(shù)存儲(chǔ)方式是以整數(shù)存儲(chǔ)方式(二進(jìn)制補(bǔ)碼方式二進(jìn)制補(bǔ)碼方式)存存儲(chǔ)的,儲(chǔ)的,以以short int型存放則型存放則占占2個(gè)個(gè)字節(jié)字節(jié)0 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 0 0
59、 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 1字符類型字符類型 字符串常數(shù)字符串常數(shù) 用雙引號(hào)括起來的一個(gè)或多個(gè)字符序列,如用雙引號(hào)括起來的一個(gè)或多個(gè)字符序列,如How How are youare you 、 a a 、 chinachina、 、 漢字等都是等都是合法的字符串常數(shù)。合法的字符串常數(shù)。 每個(gè)字符串常數(shù)都用一個(gè)每個(gè)字符串常數(shù)都用一個(gè)0 0(00或或NULLNULL) )作為結(jié)作為結(jié)束符,所以每個(gè)字符串長(zhǎng)度為其字符個(gè)數(shù)加束符,所以每個(gè)字符串長(zhǎng)度為其字符個(gè)數(shù)加1 1。 如如a a的長(zhǎng)度為的長(zhǎng)度為2 2個(gè)字節(jié)個(gè)字節(jié)
60、; ;而而How are youHow are you的長(zhǎng)度的長(zhǎng)度為為1212個(gè)字節(jié);個(gè)字節(jié);漢字的長(zhǎng)度為的長(zhǎng)度為5 5個(gè)字節(jié)。個(gè)字節(jié)。字符類型字符類型 字符串常數(shù)字符串常數(shù) How are youHow are you 在內(nèi)存中的存放形式:在內(nèi)存中的存放形式:0 1 0 0 1 0 0 00 1 1 0 1 1 1 10 0 1 0 0 0 0 00 1 1 1 0 1 1 10 1 1 0 0 0 0 10 1 1 1 0 0 1 00 0 1 0 0 0 0 00 1 1 0 0 1 0 10 1 1 1 1 0 0 10 1 1 0 1 1 1 10 0 0 0 0 0 0 00 1 1 1 0 1 0 10uHow a
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年種子繁育員考試知識(shí)深度分析試題及答案
- 電力安全生產(chǎn)課件
- 項(xiàng)目三藥店顧客接待與服務(wù)
- 如何選擇合適的體育經(jīng)紀(jì)人考試輔導(dǎo)內(nèi)容 試題及答案
- 2024年農(nóng)作物種子繁育員知識(shí)要點(diǎn)試題及答案
- 模具設(shè)計(jì)對(duì)制造成本的影響試題與答案
- 2024年模具設(shè)計(jì)師資格考試的重大變革試題與答案
- 探索裁判員等級(jí)考試試題及答案
- (高清版)DB50∕T 801-2017 渝小吃 麻辣豆魚烹飪技術(shù)規(guī)范
- 2024年農(nóng)作物種子繁育員職業(yè)資格考試要點(diǎn)梳理與試題答案
- 招投標(biāo)評(píng)分索引表模板
- 運(yùn)輸風(fēng)險(xiǎn)防控記錄表
- 紅星美凱龍商場(chǎng)管理制度全套
- Q∕GDW 12151-2021 采用對(duì)接裝置的輸電線路流動(dòng)式起重機(jī)組塔施工工藝導(dǎo)則
- 《敘事式心理治療》精品PPT
- 高速鐵路知識(shí)PPT通用PPT課件
- 胰島素分類及使用方法PPT課件
- 鋁合金門窗工程監(jiān)理質(zhì)量控制圖冊(cè)
- MyPowerS3100系列以太網(wǎng)交換機(jī)配置手冊(cè)V4.0
- 點(diǎn)擊下載視力殘疾標(biāo)準(zhǔn)和評(píng)定方法(馬勝生) - 廣州市殘疾人聯(lián)合會(huì)
- GB_T 1576-2018 工業(yè)鍋爐水質(zhì)(高清正版)
評(píng)論
0/150
提交評(píng)論