版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
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 一個簡單程序的例子一個簡單程序的例子3.2 數(shù)據(jù)類型數(shù)據(jù)類型3.3 標(biāo)識符、常量與變量、宏定義標(biāo)識符、常量與變量、宏定義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 程序的錯誤類型程序的錯誤類型3.16 調(diào)試與測試調(diào)試與測試 第第3章章 數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、順序結(jié)構(gòu)順序結(jié)構(gòu)3.1 一個簡單程序的例子一個簡單程序的例子3.2 數(shù)據(jù)類型數(shù)據(jù)類型3.3 標(biāo)識符、常量與變量、宏定義標(biāo)識符、常量與變量、宏定義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)算一個一個簡單程序的例子簡單程序的例子華氏溫度華氏溫度 攝氏溫度攝氏溫度算法:算法: 1.1.輸入一個華氏溫度輸入一個華氏溫度f f 2.2.轉(zhuǎn)換計算轉(zhuǎn)換計算: : c - (f-32)c - (f-32)* * 5/9 5/9 3. 3.輸出攝氏溫度輸出攝氏溫度c c一個一個簡單程序的例子簡單程序的例子#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)換計算輸出程序運(yùn)行時,輸入的程序
4、運(yùn)行時,輸入的120放到變量放到變量f中中計算的結(jié)果計算的結(jié)果48.888889放到變量放到變量c中中第第3章章 數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、順序結(jié)構(gòu)順序結(jié)構(gòu)3.1 一個簡單程序的例子一個簡單程序的例子3.2 數(shù)據(jù)類型數(shù)據(jù)類型3.3 標(biāo)識符、常量與變量、宏定義標(biāo)識符、常量與變量、宏定義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ù)類型決定:存儲空間的大小、數(shù)據(jù)值的表示范圍存儲空間的大小、數(shù)據(jù)值的表示范圍允許的操作種類允許的操作種類 常量、變量、表達(dá)式、函數(shù)等都有確定常量、變量、表達(dá)式、函數(shù)等都有確定的數(shù)據(jù)類型。一旦確定,就不會改變。的數(shù)據(jù)類型。一旦確定,就不會改變。數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)據(jù)存放在存儲器中,存儲器以字節(jié)為數(shù)據(jù)存放在存儲器中,存儲器以字節(jié)為最小存儲單元,一個字節(jié)最小存儲單元,一個字節(jié)( (bytebyte) )由由8 8個二個二進(jìn)制位進(jìn)制位( (bitbit) )組成。數(shù)據(jù)按其所需的存儲組成。數(shù)據(jù)按
7、其所需的存儲單元和組織形式不同,分成不同數(shù)據(jù)類單元和組織形式不同,分成不同數(shù)據(jù)類型。型。 二進(jìn)制的知識二進(jìn)制的知識第第3章章 數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、順序結(jié)構(gòu)順序結(jié)構(gòu)3.1 一個簡單程序的例子一個簡單程序的例子3.2 數(shù)據(jù)類型數(shù)據(jù)類型3.3 標(biāo)識符、常量與變量、宏定義標(biāo)識符、常量與變量、宏定義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)識符、常量與變量、宏標(biāo)識符、常量與變量、宏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個字符個字符 另外另外, ,字符串中還允許出現(xiàn)中文字符。字符串中還允許出現(xiàn)中文字符。標(biāo)識符、常量與變量、宏標(biāo)識符、常量與變量、宏標(biāo)識符標(biāo)識符 用來標(biāo)識變量名、符號常量名、數(shù)組名、函數(shù)用來標(biāo)識變量名、符號常量名、數(shù)組名、函數(shù)名、文件名等的字符序列稱為名、文件名等的字符序列稱為標(biāo)識符標(biāo)識符。 標(biāo)識符由標(biāo)識符由字母字母、數(shù)字?jǐn)?shù)字和和下劃線下劃線組成,且由字母組成,且由字母和下劃線開頭。和下劃線開頭。 例如:例如:namename、s01s01、_total_total、_123_123等都是合法等都是合法的標(biāo)識符,而的標(biāo)識符,而12acd12acd、R.RebinR.Rebin、$
10、12.5$12.5等都是等都是不合法的。另外組成標(biāo)識符的大寫字母與小寫不合法的。另外組成標(biāo)識符的大寫字母與小寫字母是不同的。字母是不同的。 例如:例如:_ABC_ABC與與_abc_abc是兩個不同的標(biāo)識符。是兩個不同的標(biāo)識符。標(biāo)識符、常量與變量、宏標(biāo)識符、常量與變量、宏標(biāo)識符命名標(biāo)識符命名 命名要命名要“見名知意見名知意”,通過變量名就知道變量,通過變量名就知道變量的含義。這樣可提高程序的可讀性。通常應(yīng)選的含義。這樣可提高程序的可讀性。通常應(yīng)選擇能表示數(shù)據(jù)含義的英文單詞(或縮寫)作變擇能表示數(shù)據(jù)含義的英文單詞(或縮寫)作變量名。量名。 例如例如: name(姓名)、(姓名)、gender(性
11、別)、(性別)、 age (年齡)、(年齡)、salary(工資)。(工資)。標(biāo)識符、常量與變量、宏標(biāo)識符、常量與變量、宏 標(biāo)識符分為兩類:標(biāo)識符分為兩類: 1. 1. 用戶自定義標(biāo)識符用戶自定義標(biāo)識符 2. 2. 系統(tǒng)定義的標(biāo)識符系統(tǒng)定義的標(biāo)識符( (稱為關(guān)鍵字或保留字稱為關(guān)鍵字或保留字) ) 用戶自定義標(biāo)識符不能與關(guān)鍵字相同。用戶自定義標(biāo)識符不能與關(guān)鍵字相同。 標(biāo)識符、常量與變量、宏標(biāo)識符、常量與變量、宏 關(guān)鍵字關(guān)鍵字 C C語言定義了一些具有特定意義的單詞作語言定義了一些具有特定意義的單詞作關(guān)鍵字關(guān)鍵字( (又叫又叫保留字保留字) )。對于關(guān)鍵字,用戶只能嚴(yán)格按。對于關(guān)鍵字,用戶只能嚴(yán)格
12、按規(guī)定使用而不能作為它用。所有關(guān)鍵字都用小規(guī)定使用而不能作為它用。所有關(guān)鍵字都用小寫,且必須嚴(yán)格按定義拼寫。寫,且必須嚴(yán)格按定義拼寫。C C語言的關(guān)鍵字較語言的關(guān)鍵字較少,只有少,只有3030多個。多個。標(biāo)識符、常量與變量、宏標(biāo)識符、常量與變量、宏 關(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)識符時,不要忘了大小寫字使用標(biāo)識符時,不要忘了大小寫字母之間的區(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)識符、常量與變量、宏標(biāo)識符、常量與變量、宏定義定義變量變量fahr和和celsius為為double型型輸
14、入數(shù)據(jù)存放到變量輸入數(shù)據(jù)存放到變量fahr計算計算celsius的值的值輸出輸出fahr和和celsius的的值值標(biāo)識符、常量與變量、宏標(biāo)識符、常量與變量、宏 程序程序=數(shù)據(jù)數(shù)據(jù)+代碼代碼 數(shù)據(jù)數(shù)據(jù)是計算機(jī)程序處理加工的對象。是計算機(jī)程序處理加工的對象。double celsius, fahr; fahr = 100.0;celsius = 5 * (fahr - 32) / 9; 在計算機(jī)高級語言中,數(shù)據(jù)有兩種表現(xiàn)形式:在計算機(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)識符、常量與變量、宏標(biāo)識符、常量與變量、宏 變量:變量:變量代表一個命名的存儲單元,具有存儲數(shù)據(jù)的能變量代表一個命名的存儲單元,具有存儲數(shù)據(jù)的能力。力。 變量名變量名: 用標(biāo)識符表示用標(biāo)識符表示 變量值變量值: 是數(shù)值是數(shù)值,存儲單元中的內(nèi)容,在機(jī)器內(nèi)部用二存儲單元中的內(nèi)容,在機(jī)器內(nèi)部用二進(jìn)制表示進(jìn)制表示 存儲單元:由變量的數(shù)據(jù)類型和在內(nèi)存中的位置確定存儲單元:由變量的數(shù)據(jù)類型和在內(nèi)存中的位置確定 在程序運(yùn)行過程中,變量的值是可以改變的。在程序運(yùn)行過程
16、中,變量的值是可以改變的。 300變量值變量名存儲單元weightweightint weight=300;標(biāo)識符、常量與變量、宏標(biāo)識符、常量與變量、宏 變量定義的一般形式:變量定義的一般形式: 數(shù)據(jù)類型名數(shù)據(jù)類型名 變量名列表;變量名列表; 例如:例如:int s; /定義整型變量定義整型變量float x; /定義單精度浮點(diǎn)型變量定義單精度浮點(diǎn)型變量double area, length; /定義雙精度浮點(diǎn)型變量定義雙精度浮點(diǎn)型變量 定義變量時要指定變量名和數(shù)據(jù)類型定義變量時要指定變量名和數(shù)據(jù)類型 用變量名代表內(nèi)存中的一個存儲單元用變量名代表內(nèi)存中的一個存儲單元 存儲單元的大小存儲單元的大
17、小(字節(jié)數(shù)字節(jié)數(shù))由變量的數(shù)據(jù)類型決定由變量的數(shù)據(jù)類型決定標(biāo)識符、常量與變量、宏標(biāo)識符、常量與變量、宏 變量必須先變量必須先定義定義,后,后使用使用。#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; 定義一個變量定義一個變量,變量名叫變量名叫price,類型是類型是 int,初始值是初始值是10。 這里的這里的
18、“=”是一個賦值運(yùn)算符,表示將是一個賦值運(yùn)算符,表示將“=”右邊的右邊的值賦給左邊的變量。值賦給左邊的變量。 在定義變量時,就對變量進(jìn)行賦值,這時候的賦值又在定義變量時,就對變量進(jìn)行賦值,這時候的賦值又叫做初始化。叫做初始化。 int price; price=10;標(biāo)識符、常量與變量、宏標(biāo)識符、常量與變量、宏 int a=10,b=20; a=b; /將變量將變量b的值賦給變量的值賦給變量a,a,b均為均為20 b=a; /將變量將變量a的值賦給變量的值賦給變量b,a,b均為均為10C語言中的變量代表存儲數(shù)據(jù)的存儲單元語言中的變量代表存儲數(shù)據(jù)的存儲單元標(biāo)識符、常量與變量、宏標(biāo)識符、常量與變量
19、、宏標(biāo)識符、常量與變量、宏標(biāo)識符、常量與變量、宏 數(shù)學(xué)中的變量代表未知數(shù)數(shù)學(xué)中的變量代表未知數(shù) 數(shù)學(xué)中:數(shù)學(xué)中:x = x+1 (錯誤的錯誤的) C語言中:語言中: int x=10; x = x+1; (將變量將變量x所代表的存儲單元中的值讀取所代表的存儲單元中的值讀取出來,增加出來,增加1,再存放到存儲單元中。,再存放到存儲單元中。)10 11x = x+1x x int i;int j;j=i+10;請問請問 j的值是多少?的值是多少?標(biāo)識符、常量與變量、宏標(biāo)識符、常量與變量、宏int i=0;int j;j=i+10;所有變量第一次出現(xiàn)在賦值運(yùn)算符的右邊之所有變量第一次出現(xiàn)在賦值運(yùn)算符
20、的右邊之前應(yīng)該被賦值一次前應(yīng)該被賦值一次.標(biāo)識符、常量與變量、宏標(biāo)識符、常量與變量、宏 常量:常量:指在程序運(yùn)行過程中值不變的量 常數(shù):常數(shù):例如,例如,32,3.14,“ABCD”,A 在在C C語言中,不同類型的常量有不同的表示方法。語言中,不同類型的常量有不同的表示方法。 符號常量:符號常量:在程序中為了能明確表示常量的含義,提高程序的可閱讀在程序中為了能明確表示常量的含義,提高程序的可閱讀性,常用一個符號名稱代表一個常量。性,常用一個符號名稱代表一個常量。 #include #define PRICE 30 /注意該行末尾沒有分號注意該行末尾沒有分號 / #define是是預(yù)編譯命令,
21、稱為宏預(yù)編譯命令,稱為宏( (macromacro) )定義定義。作用是作用是符號替換符號替換。 int main( ) printf( “total=%d”,PRICE*10 ); return 0; 在對程序進(jìn)行編譯之前,系統(tǒng)會進(jìn)行預(yù)處理,將所有在對程序進(jìn)行編譯之前,系統(tǒng)會進(jìn)行預(yù)處理,將所有PRICE符號常量全部替換為符號常量全部替換為30。預(yù)編譯后。預(yù)編譯后程序變成:程序變成: int main( ) printf( “total=%d”,30*10 ); return 0; 標(biāo)識符、常量與變量、宏標(biāo)識符、常量與變量、宏#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): 符號常量一定要先定義再使用 符號常量的值是不能改變的 符號常量在程序中可以直接引用而不必作任何說明,因?yàn)榫幾g程序能夠根據(jù)常量的書寫形式辨別其數(shù)據(jù)類型。PIPI標(biāo)識符、常量與變量、宏標(biāo)識符、常量與變量、宏 定義常量的另一種方法:定義常量的另一種
23、方法: const double pi=3. 1415926535; (C99標(biāo)準(zhǔn)標(biāo)準(zhǔn)!) #define PI 3.1415926 兩種方法的區(qū)別:兩種方法的區(qū)別: PI不分配存儲單元,不分配存儲單元,pi與變量一樣分配存儲單元,與變量一樣分配存儲單元,但但pi的值不允許修改。的值不允許修改。第第3章章 數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、順序結(jié)構(gòu)順序結(jié)構(gòu)3.1 一個簡單程序的例子一個簡單程序的例子3.2 數(shù)據(jù)類型數(shù)據(jù)類型3.3 標(biāo)識符、常量與變量、宏定義標(biāo)識符、常量與變量、宏定義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ù)的表示方法 還有一種被稱為長整型常數(shù)的整型常數(shù),其表還有一種被稱為長整型常數(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 符號位1 1 1 1 1 1 1 1 0 1 1 0
27、1 1 1 1 符號位整數(shù)類型整數(shù)類型原碼:符號位原碼:符號位+絕對值轉(zhuǎn)換后的二進(jìn)制絕對值轉(zhuǎn)換后的二進(jìn)制反碼:符號位反碼:符號位+絕對值轉(zhuǎn)換后的二進(jìn)制每位的反絕對值轉(zhuǎn)換后的二進(jìn)制每位的反補(bǔ)碼:符號位補(bǔ)碼:符號位+(反碼(反碼+1)一般帶符號的整數(shù)采用補(bǔ)碼表示方法。一般帶符號的整數(shù)采用補(bǔ)碼表示方法。整數(shù)類型整數(shù)類型 類 型 含 義 占存儲空間 數(shù) 值 的 范 圍 char 字符1個字節(jié) -128127-128127int 整型4個字節(jié)-21474836482147483647-21474836482147483647long 長整型4個字節(jié)-21474836482147483647-214748
28、36482147483647 僅以僅以32位編譯器為例!位編譯器為例!long long 長長整型長長整型8個字節(jié)個字節(jié)-263263-1short 短整型短整型2個字節(jié)個字節(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個字節(jié)個字節(jié), , 而早而早期的期的TCTC中的中的intint是是2 2個字節(jié)。個字節(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ù),則可以將變量定義“無符號無符號”整型
30、:整型: 無符號基本整型無符號基本整型 unsigned int 無符號短整型無符號短整型 unsigned short int 無符號長整型無符號長整型 unsigned long int 無符號雙長整型無符號雙長整型 unsigned long long int 無符號整型數(shù)據(jù)存儲單元的最高位不表示符號位無符號整型數(shù)據(jù)存儲單元的最高位不表示符號位 有符號基本整型有符號基本整型 signed int 有符號短整型有符號短整型 signed short int 有符號長整型有符號長整型 signed long int 有符號雙長整型有符號雙長整型 signed long long int 有符
31、號整型數(shù)據(jù)存儲單元的最高位代表符號位(有符號整型數(shù)據(jù)存儲單元的最高位代表符號位(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符號位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í)際存儲整數(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) 一個一個intint型的變量最大允許值為型的變量最大允許值為INT_MAX(INT_MAX(定義在定義在limits.hlimits.h中中) ),最小為,最小為INT_M
33、ININT_MIN,如果超出范圍,如果超出范圍就會出現(xiàn)所謂溢出的運(yùn)行時錯誤(就會出現(xiàn)所謂溢出的運(yùn)行時錯誤(run-time run-time errorerror)。)。 如在一個如在一個3232位系統(tǒng)中,一個位系統(tǒng)中,一個intint類型的數(shù)據(jù)最類型的數(shù)據(jù)最大值為大值為21474836472147483647,如果再加上,如果再加上1 1,就會溢出,就會溢出, , 值變?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)行時,系統(tǒng)不會給出溢出提示!運(yùn)行時,系統(tǒng)不會給出溢出提示!防止溢出的發(fā)生是程序員的責(zé)任!防止溢出的發(fā)生是程序員的責(zé)任!重要提示重
35、要提示 編程時必須保證所有整型變量在任編程時必須保證所有整型變量在任何時候都沒有超出數(shù)據(jù)類型的取值何時候都沒有超出數(shù)據(jù)類型的取值范圍!范圍!第第3章章 數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、順序結(jié)構(gòu)順序結(jié)構(gòu)3.1 一個簡單程序的例子一個簡單程序的例子3.2 數(shù)據(jù)類型數(shù)據(jù)類型3.3 標(biāo)識符、常量與變量、宏定義標(biāo)識符、常量與變量、宏定義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型型 ) 長雙精度長雙精度( long double型型 ) 例如:定義浮點(diǎn)
37、型變量例如:定義浮點(diǎn)型變量 float f1,f2; double d1,d2; long double ld;浮點(diǎn)型類型浮點(diǎn)型類型 類 型 占存儲空間 有效數(shù)位數(shù) 數(shù) 值 范 圍 float4個字節(jié)6 7-3.4-3.41010-38-38 3.4 3.410103838 double8個字節(jié)15 16-1.7-1.71010-308-308 1.7 1.71010308308 long double16個字節(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ī)的存儲單元中是以指數(shù)形在計算機(jī)的存儲單元中是以指數(shù)形式存放的,即,把一個浮點(diǎn)數(shù)用符號位、指數(shù)和式存放的,即,把一個浮點(diǎn)數(shù)用符號位、指數(shù)和尾數(shù)來表示。指數(shù)部分和尾數(shù)部分各占多少位在尾數(shù)來表示。指數(shù)部分和尾數(shù)部分各占多少位在C標(biāo)準(zhǔn)中并無具體規(guī)定,由編譯系統(tǒng)自己決定。標(biāo)準(zhǔn)中并無具體規(guī)定,由編譯系統(tǒng)自己決定。符號位符號位指數(shù)指數(shù)尾數(shù)尾數(shù)長度長度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)存中的存放方式存放方式 一個浮
39、點(diǎn)一個浮點(diǎn)floatfloat型數(shù)據(jù)一般在內(nèi)存中占型數(shù)據(jù)一般在內(nèi)存中占4 4個字節(jié)。與整個字節(jié)。與整型數(shù)據(jù)的存儲方式不同,浮點(diǎn)型數(shù)據(jù)是按照指數(shù)形式型數(shù)據(jù)的存儲方式不同,浮點(diǎn)型數(shù)據(jù)是按照指數(shù)形式存儲的。分成尾數(shù)和指數(shù)兩部分。存儲的。分成尾數(shù)和指數(shù)兩部分。 x127+c符號符號 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)存的存放形式: 最高位:符號位,最高位:符號位, 指數(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)存的存放形式: 最高位:符號位最高位:符號位 指數(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)存存儲形式:的內(nèi)存存儲形式: 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)存是不存儲的在內(nèi)存是不存儲的) 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、符號位為、符號位為0(正數(shù)),將三部分(正數(shù)),將三部分合在一起(尾數(shù)最高位的合在一起(尾數(shù)最高位的1不要):不要):01000000 11100010 11000001 11001100 11001100 11001100 11001100 11001101按字節(jié)倒序存儲的十六進(jìn)制數(shù)就是:按字節(jié)倒序存儲的十六進(jìn)制數(shù)就是: CD CC CC CC CC C1 E2 40 一個基本類型數(shù)據(jù)的幾個字節(jié)的在內(nèi)存中存放次序,一個基本類型數(shù)據(jù)的幾個字節(jié)的在內(nèi)存中存放次序,
44、不同不同CPU可能不同??赡懿煌H纾喝纾篒ntel CPU:稱為:稱為 little_endian(小端格式)(小端格式)浮點(diǎn)型類型浮點(diǎn)型類型 地址編號地址編號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)型變量存放在有限的幾個字節(jié)的存儲由于浮點(diǎn)型變量存放在有限的幾個字節(jié)的存儲單元中,所以能提供的有效數(shù)字總
45、是有限的,單元中,所以能提供的有效數(shù)字總是有限的,因此有效位以外的數(shù)字將被舍去,由此會產(chǎn)生因此有效位以外的數(shù)字將被舍去,由此會產(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 由于一個由于一個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; 在編譯時,系統(tǒng)給變量在編譯時,系統(tǒng)給變量a分配分配4個字節(jié),但對于浮點(diǎn)個字節(jié),但對于浮點(diǎn)型常量型常量3.14159則按照則按照double型(型(8個字節(jié))處理,系個字節(jié))處理,系統(tǒng)會發(fā)出警告統(tǒng)會發(fā)出警告“warning:truncation from const double to float”,提醒用戶這種轉(zhuǎn)換可能會損失精,提醒用戶這種轉(zhuǎn)換可能會損失精度。度。浮點(diǎn)型類型浮點(diǎn)型類型 float f; f=2.45678*4523.65; 系統(tǒng)將系統(tǒng)將2.45678和和4523.65按按double數(shù)據(jù)存儲和運(yùn)算,數(shù)據(jù)存儲和運(yùn)算,得到
48、一個得到一個double的乘積,然后取前的乘積,然后取前7位賦值給位賦值給float變變量量 f,這樣做的目的是為了保證計算結(jié)果更精確。但,這樣做的目的是為了保證計算結(jié)果更精確。但是運(yùn)算速度降低了。可以在是運(yùn)算速度降低了??梢栽诟↑c(diǎn)型常量的后面加上浮點(diǎn)型常量的后面加上字符字符f或或F(如如2.45678f、4523.65F),此時編譯系統(tǒng)會,此時編譯系統(tǒng)會按按float處理它們。處理它們。浮點(diǎn)型類型浮點(diǎn)型類型浮點(diǎn)型類型浮點(diǎn)型類型 浮點(diǎn)型變量的溢出浮點(diǎn)型變量的溢出(overflow)(overflow)和下和下溢溢(underflow(underflow) ) 一個一個doubledouble型
49、的變量最大絕對值為型的變量最大絕對值為DBL_MAX(DBL_MAX(定義在定義在float.hfloat.h中中) )(如:(如:1.7976931348623157e+308),最小),最小絕對值為絕對值為DBL_MINDBL_MIN(如:(如:2.2250738585072014e-308),),如果超出范圍就會出現(xiàn)上溢或下溢的錯誤情況。如果超出范圍就會出現(xiàn)上溢或下溢的錯誤情況。浮點(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 一個簡單程序的例子一個簡單程序的例子3.2 數(shù)據(jù)類型數(shù)據(jù)類型3.3 標(biāo)識符、常量與變量、宏定義標(biāo)識符、常量與變量、宏定義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ù) 普通字符:普通字符:用用單引號單引號括起的一個字符,如括起的一個字符,如a、?、B、5和和*等都是合法的字符常量。等都是合法的字符常量。 a和和A是不同的字符常量。是不同的字符常量。字符型數(shù)據(jù)存儲在內(nèi)存中占一個字節(jié),字符型數(shù)據(jù)存儲在內(nèi)存中占一個字節(jié),是以其代碼(是以其代碼(ASCII碼碼)存儲的。存儲的。字符常量 存儲形式 十進(jìn)制表示A01 000 00165a01 100 00197?00 111 11163500 11010153 附錄附錄B,給出給出了常用字符了常用字符與其對
52、應(yīng)的與其對應(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)義字符中反斜杠反斜杠()后面的字符在編譯時需要特殊處后面的字符在編譯時需要特殊處理,不能當(dāng)作普通字符對待。理,不能當(dāng)作普通字符對待。 例如,例如,n是在第一個字符是在第一個字符反斜杠(反斜杠()后緊跟一個字后緊跟一個字符符n,它表示一個換行字符。,它表示一個換行字符。 n代表一個字符(換行符)代表一個字符(換行符),其,其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 空字符,其符號常量名為空字符,其符號常量名為NULL NULL 0 單引號字符單引號字符 39 ”雙引號字符雙引號字符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)存中的存放方式 將一個字符常量存放到一個字符變量中,其實(shí)將一個字符常量存放到一個字符變量中,其實(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、類型 一個字符變量中的值,是被當(dāng)成整數(shù)值使用,一個字符變量中的值,是被當(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個其他字母。從ASCII碼表可
58、以看到每個小寫字母比它相應(yīng)的大寫字母的ASCII碼值大32。字符常量和變量可以看成是一個8位的整型數(shù)據(jù)。 所以:c1=a+2;則c1中的值99(即c字符)。字符類型字符類型 字符字符1和整數(shù)和整數(shù)1是不同的概念是不同的概念: 字符字符1只是代表一個形狀為只是代表一個形狀為1的符號,的符號,在內(nèi)存中以在內(nèi)存中以ASCII碼碼(49)二進(jìn)制二進(jìn)制形式存儲,占形式存儲,占1個字節(jié)個字節(jié) 整數(shù)整數(shù)1是以整數(shù)存儲方式是以整數(shù)存儲方式(二進(jìn)制補(bǔ)碼方式二進(jìn)制補(bǔ)碼方式)存存儲的,儲的,以以short int型存放則型存放則占占2個個字節(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ù) 用雙引號括起來的一個或多個字符序列,如用雙引號括起來的一個或多個字符序列,如How How are youare you 、 a a 、 chinachina、 、 漢字等都是等都是合法的字符串常數(shù)。合法的字符串常數(shù)。 每個字符串常數(shù)都用一個每個字符串常數(shù)都用一個0 0(00或或NULLNULL) )作為結(jié)作為結(jié)束符,所以每個字符串長度為其字符個數(shù)加束符,所以每個字符串長度為其字符個數(shù)加1 1。 如如a a的長度為的長度為2 2個字節(jié)個字節(jié)
60、; ;而而How are youHow are you的長度的長度為為1212個字節(jié);個字節(jié);漢字的長度為的長度為5 5個字節(jié)。個字節(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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 投資合作協(xié)議樣本
- 東風(fēng)商用車合作協(xié)議
- 2025版土地整治項(xiàng)目土地承包協(xié)議3篇
- 2025年西安建工園林工程有限公司招聘筆試參考題庫含答案解析
- 2025年度個人二手房交易合同模板綠色環(huán)保型2篇
- 2025年度定制化個人購房合同范本2篇
- 2025年全球及中國氣動式高壓無氣噴涂機(jī)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025版?zhèn)€人退股協(xié)議書:私募股權(quán)退出及收益分配合同4篇
- 2024年教師資格之中學(xué)綜合素質(zhì)模擬題庫及答案
- 2025年個人二手車買賣合同(帶車輛狀況認(rèn)證服務(wù))
- 2025貴州貴陽市屬事業(yè)單位招聘筆試和高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年住院醫(yī)師規(guī)范化培訓(xùn)師資培訓(xùn)理論考試試題
- 期末綜合測試卷(試題)-2024-2025學(xué)年五年級上冊數(shù)學(xué)人教版
- 招標(biāo)采購基礎(chǔ)知識培訓(xùn)
- 2024年廣東省公務(wù)員錄用考試《行測》試題及答案解析
- 五年級口算題卡每天100題帶答案
- 結(jié)構(gòu)力學(xué)本構(gòu)模型:斷裂力學(xué)模型:斷裂力學(xué)實(shí)驗(yàn)技術(shù)教程
- 2024年貴州省中考理科綜合試卷(含答案)
- 無人機(jī)技術(shù)與遙感
- 恩施自治州建始東升煤礦有限責(zé)任公司東升煤礦礦產(chǎn)資源開發(fā)利用與生態(tài)復(fù)綠方案
- PDCA提高臥床患者踝泵運(yùn)動的執(zhí)行率
評論
0/150
提交評論