




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第3章2主要內容3.1 3.1 常量與變量常量與變量3.2 3.2 整型數據整型數據3.3 3.3 浮點型數據浮點型數據3.4 3.4 字符字符型數據型數據3.5 3.5 各類數值型數據間的混合運算各類數值型數據間的混合運算 3數據類型總表數據類型總表C C數數據據類類型型基本類型基本類型構造類型構造類型指針類型指針類型空類型空類型voidvoid字符類型字符類型char整整 型型實型實型單精度型單精度型float雙精度型雙精度型double結構體結構體struct共用體共用體union短整型短整型short長整型長整型long整型整型int數據類型決定:1. 數據占內存字節數2. 數據取值范
2、圍3. 其上可進行的操作基本數據類型的特點:其值不可以再分為其它數據類型由已定義的一個或多個數據類型用構造的方法來由已定義的一個或多個數據類型用構造的方法來定義的。定義的。即一個構造類型的值可以分解成若干個即一個構造類型的值可以分解成若干個“成員成員”或或“元素元素”。每個成員可能是一個基本。每個成員可能是一個基本數據類型或又是一個構造類型。數據類型或又是一個構造類型。數組數組枚舉類型枚舉類型定義類型定義類型typedeftypedef43.1 常量與變量常量常量: :在程序運行過程中在程序運行過程中,其值不能被改變的量稱其值不能被改變的量稱為常量。為常量。常量區分為不同的類型:常量區分為不同
3、的類型:整型整型 100100,125125,-100-100,0 0實型實型 3.14 3.14 , 0.1250.125,-3.789-3.789字符型字符型 a, ba, b,22符號常量符號常量 為了使用方便,可用一個標識符(符號名)來代表為了使用方便,可用一個標識符(符號名)來代表一個常量。一個常量。5例例3-13-1在程序中使用符號常量在程序中使用符號常量 #define PRICE 30#include void main ( ) int num, total; num=10; total=num * PRICE; printf(total=%dn,total); 運行結果運行結
4、果: total=300total=300程序中用程序中用#define#define命令行定義命令行定義PRICEPRICE代代表常量表常量30,30,此后凡在本文件中出現的此后凡在本文件中出現的PRICEPRICE都代表都代表30,30,可以和常量一樣進行運算可以和常量一樣進行運算如再用賦值語句給如再用賦值語句給PRICEPRICE賦值是錯的賦值是錯的PRICE=40;PRICE=40; / /* * 錯誤,不能給符號錯誤,不能給符號 常量賦值常量賦值* */ /不能對符號常量指定類型不能對符號常量指定類型intint PRICE; PRICE; / /* * 錯誤,錯誤,PRICEPRI
5、CE不是不是 變量,不能指定類型變量,不能指定類型 * */ / 定義格式: #define#define 符號常量符號常量 常量常量符號常量一般用大寫字母符號常量一般用大寫字母在此命令行的后面不加分號在此命令行的后面不加分號63.1 常量與變量變量變量: :在程序運行過程中在程序運行過程中,其值發生改變的量稱為其值發生改變的量稱為變量。變量。變量變量代表內存中具有特定屬性的代表內存中具有特定屬性的一個存儲單元一個存儲單元,它用來存放數據,也就是變量的值,在程序運行它用來存放數據,也就是變量的值,在程序運行期間,這些值是可以改變的期間,這些值是可以改變的73.1 常量與變量變量名變量名實際上是
6、以一個名字代表實際上是以一個名字代表一個內存地址一個內存地址,在對程序編譯連接時由編譯系統給每一個變量名在對程序編譯連接時由編譯系統給每一個變量名分配對應的內存地址。分配對應的內存地址。從變量中取值,實際上是從變量中取值,實際上是通過變量名找到相應的內存地址,從該存儲單元通過變量名找到相應的內存地址,從該存儲單元中讀取數據中讀取數據注意區注意區分變量分變量名和變名和變量值量值83.1 常量與變量標識符標識符v定義:用來標識變量、函數、數組等的字符序定義:用來標識變量、函數、數組等的字符序列列vC語言中,有語言中,有3類標識符:關鍵字,系統預定義類標識符:關鍵字,系統預定義的標識符的標識符 ,用
7、戶標識符,用戶標識符v組成:組成:l只能由只能由字母字母、數字數字、下劃線下劃線組成,且第一個字母組成,且第一個字母必須是字母或下劃線必須是字母或下劃線l大小寫敏感(如:大小寫敏感(如:page和和Page是兩個不同的標是兩個不同的標識符)識符),一般變量名用小寫字母表示一般變量名用小寫字母表示l不能使用關鍵字、預定義不能使用關鍵字、預定義標識符標識符(如庫函數名(如庫函數名printf等等)93.1 常量與變量標識符標識符v有效長度:隨系統而異,但至少前有效長度:隨系統而異,但至少前8個字符有效,個字符有效,建議建議標識符標識符的長度最好不要超過的長度最好不要超過8個字符個字符 P29v命名
8、原則:命名原則:l見名知意見名知意l不宜混淆不宜混淆 如如l與與I, o與與0例:判斷下列標識符的合法性sum Sum M.D.John day Date 3days student_name #33 lotus_1_char ab _above $123M.D.John3days#33char$123ab103.1 常量與變量在程序中,常量是可以不經說明而直接引用的,而變量則必須先定義后使用變量則必須先定義后使用v變量定義的一般格式: 數據類型 變量1,變量2,變量n;決定分配字節數和決定分配字節數和數的表示范圍以及數的表示范圍以及其上可進行的操作其上可進行的操作例: int a,b,c;
9、float data;合法標識符v變量初始化變量初始化:定義時賦初值定義時賦初值例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=z=1;編譯程序根據變量定義為其編譯程序根據變量定義為其分配指定字節的內存單元分配指定字節的內存單元.地址int a=1, b=-3,c;abc2字節2字節2字節地址地址.內存1-3隨機數例1 int student; stadent=19; /Undefined symbol statent in function main 例2 float a,b,c; c=a%b; /
10、Illegal use of floating point in function main v變量定義位置:變量定義位置:一般一般放在函數開頭放在函數開頭void main() int a,b=2; a=1; float data; data=(a+b)*1.2; printf(“data=%fn”,data);v允許在一個類型說明符后,說明多個相同類型允許在一個類型說明符后,說明多個相同類型的變量。各變量名之間用逗號間隔。類型說明的變量。各變量名之間用逗號間隔。類型說明符與變量名之間至少用一個空格間隔。符與變量名之間至少用一個空格間隔。v最后一個變量名之后必須以最后一個變量名之后必須以“;
11、”號結尾號結尾。void main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data);變量定義可執行語句例例: int a,b,c; float data;113.2 整型數據整型常量的表示形式整型常量的表示形式 三種形式:v十進制整數:由數字由數字09和正負號表示。如和正負號表示。如 123, -456,0v八進制整數:由由數字數字0開頭開頭,后跟數字后跟數字07表示。如表示。如 0123,011v十六進制整數:由由0 x開頭開頭,后跟后跟09,af,AF 表示表示。如如0 x123,0 xff在程序中
12、是根據在程序中是根據前綴來區分各種前綴來區分各種進制數的。因此進制數的。因此在書寫常數時不在書寫常數時不要把前綴弄錯造要把前綴弄錯造成結果不正確。成結果不正確。 問題:0123 = ( )100 x123 = ( )100 xff = ( )1083291255問題:問題:0123 = ( )100 x123 = ( )100 xff = ( )10123.2 整型數據整型變量整型變量v整型變量用來存放整數。整型變量用來存放整數。vC語言中有以下語言中有以下3類整型變量類整型變量 :基本整型,短整:基本整型,短整型,長整型型,長整型基本整型基本整型 以以intint表示表示短整型短整型 以以s
13、hort intshort int或或shortshort表示表示長整型長整型 以以long intlong int或或longlong表示表示133.2 整型數據整型變量整型變量v一般情況下,存儲整數時存儲單元中的第一個二進位一般情況下,存儲整數時存儲單元中的第一個二進位用來代表數值符號,而在實際應用中,變量的值常常用來代表數值符號,而在實際應用中,變量的值常常是正的是正的 ,所以存儲單元全部用來存儲數值本身,此定,所以存儲單元全部用來存儲數值本身,此定義義為為無符號整數無符號整數。所以歸納起來,在。所以歸納起來,在C語言中,可以語言中,可以定義和使用定義和使用6種整型變量種整型變量共六種共
14、六種有符號基本整型有符號基本整型有符號短整型有符號短整型有符號長整型有符號長整型無符號基本整型無符號基本整型無符號短整型無符號短整型無符號長整型無符號長整型signed int signed short intsigned long intunsigned intunsigned short intunsigned long int143.2 整型數據整型變量整型變量vANSI C標準沒有具體規定各類數據在內存中所標準沒有具體規定各類數據在內存中所占的字節數,由各占的字節數,由各C編譯系統自行決定。常見的編譯系統自行決定。常見的有兩種:(有兩種:(1)Turbo C等,等,short:2字節,
15、字節,int:2字節,字節,long:4字節;(字節;(2)Visual C+等,等, short:2字節,字節,int:4字節,字節,long:4字節字節v例:整數例:整數13的存儲情況的存儲情況 P34153.2 整型數據整型變量整型變量v整數類型的有關數據1615 14 13 12 11 109876543210有符號數有符號數無符號數無符號數0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 132767327670 1 1 1 1 1 1 1 1 1 1 1 1 1 1 032766327660 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1110 0 0 0 0
16、 0 0 0 0 0 0 0 0 0 0 0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1(補碼補碼)655351 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0-2655341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1-32767327691 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-3276832768173.2 整型數據-32768-32768的補碼問題的補碼問題v首先要知道的是計算機中補碼的表示是唯一且連續的!首先要知道的是計算機中補碼的表示是唯一且連續的!v若用若用16位來存儲,位來存儲,-32768不能用原碼表
17、示出來。所以不能用原碼表示出來。所以-32768只能通過只能通過-32767-1來求:來求:-1的補碼為的補碼為11111111 11111111-32767的補碼為的補碼為10000000 00000001所以加起來為:所以加起來為:(1)10000000 00000000 (1)被舍去了。被舍去了。v又因為又因為10000000 00000000沒有用來表示其他任何數,沒有用來表示其他任何數,所以所以10000000 00000000就被用來表示就被用來表示-32768,這也驗,這也驗證了補碼的唯一性和連續性!而且這也證明了證了補碼的唯一性和連續性!而且這也證明了16位的整位的整數的范圍是
18、數的范圍是“-3276832767”。183.2 整型數據v整型數據在內存中的存放形式整型數據在內存中的存放形式l數據在內存中以二進制形式存放數據在內存中以二進制形式存放例:例:int i; /* 定義為整型變量定義為整型變量 */i=10; /* 給給i賦以整數賦以整數10 */0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 010ii193.2 整型數據整型數據在內存中的存放形式整型數據在內存中的存放形式v實際上,實際上,數值是以補碼表示的數值是以補碼表示的。一個正整數的補碼。一個正整數的補碼和該數的原碼相同。負數的補碼是:和該數的原碼相同。負數的補碼是:符號位為符號位為1,數
19、,數值位值位將該數的絕對值的二進制形式,按位取反再加將該數的絕對值的二進制形式,按位取反再加1v例:求例:求-10的補碼的補碼1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0-10的原碼的原碼取反取反1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1得得-10的補碼的補碼1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0203.2 整型數據整型數據的溢出整型數據的溢出(自看)整型常量的類型整型常量的類型v從整型常量的字面上就可以區分它是什么類型從整型常量的字面上就可以區分它是什么類型l一個整數,如果其值在一個整數,如果其值在-32768+32767范圍內,
20、認為它是范圍內,認為它是int型型,它可以賦值給,它可以賦值給int型和型和long int型變量型變量l一個整數,如果其值超過了上述范圍,而在一個整數,如果其值超過了上述范圍,而在-2147483637+2147483647范圍內,則認為它是為范圍內,則認為它是為長整型長整型??梢詫⑺x值給一個可以將它賦值給一個long int型變量型變量l在一個整常量后面加一個字母在一個整常量后面加一個字母l或或L,則認為是,則認為是long int型型常量,常量,例如例如123l、432L、0L等等l一個整常量后面加一個字母一個整常量后面加一個字母u或或U,認為是,認為是unsigned int型型,如
21、如12345u在內存中按在內存中按unsigned int規定的方式存放規定的方式存放(存儲單元存儲單元中最高位不作為符號位,而用來存儲數據中最高位不作為符號位,而用來存儲數據)213.3 浮點型數據(實數)浮點型常量的表示形式浮點型常量的表示形式v在語言中,實數只采用十進制在語言中,實數只采用十進制 l十進制小數形式十進制小數形式:(:(必須有小數點必須有小數點) 如如0.123, .123,(絕對值小于絕對值小于1的實數,其小數點前的實數,其小數點前面的面的0可以省略可以省略) 123.0, 0.0, 123. ,0.123l指數形式:指數形式:(e或或E之前必須有數字;指數必須為之前必須
22、有數字;指數必須為整數;在字母整數;在字母e或或E的前后及數字之間不能插入空的前后及數字之間不能插入空格格)如)如12.3e3 ,123E2, 1.23e4 223.3 浮點型數據(實數)浮點型常量的表示形式浮點型常量的表示形式 在字母在字母e e(或(或E E)之前的小數部分中,小數點)之前的小數部分中,小數點左邊應有一位(且只能有一位)非零的數字左邊應有一位(且只能有一位)非零的數字例如例如: : 123.456123.456可以表示為:可以表示為: 123.456e0, 12.3456e1, 1.23456e2, 123.456e0, 12.3456e1, 1.23456e2, 0.12
23、3456e3, 0.0123456e4, 0.00123456e0.123456e3, 0.0123456e4, 0.00123456e 其中的其中的1.23456e21.23456e2稱為稱為“規范化的指數形式規范化的指數形式”一個浮點數在用指數形式輸出時,是按規范化一個浮點數在用指數形式輸出時,是按規范化的指數形式輸出的。的指數形式輸出的。233.3 浮點型數據(實數)浮點型常量的表示形式浮點型常量的表示形式 指的是小數部分中小數點前的數字為指的是小數部分中小數點前的數字為0 0,小,小數點后第數點后第1 1位數字非零的表示形式位數字非零的表示形式例如例如: : 123.456123.45
24、6可以表示為:可以表示為: 123.456e0, 12.3456e1, 1.23456e2, 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e0.123456e3, 0.0123456e4, 0.00123456e 其中的其中的0.123456e30.123456e3稱為稱為“標準化的指數形式標準化的指數形式”標準化的指數形式用于存儲。標準化的指數形式用于存儲。243.3 浮點型數據(實數)浮點型變量浮點型變量v浮點型變量分為單精度(浮點型變量分為單精度(float型)、雙精度型)、雙精度(double型
25、)和長雙精度型(型)和長雙精度型(long double)三)三類形式。類形式。253.3 浮點型數據(實數)浮點型變量浮點型變量v浮點型數據在內存中的存放形式:浮點型數據在內存中的存放形式:l與整型數據的存儲方式不同,與整型數據的存儲方式不同,浮點型數據是按照浮點型數據是按照標準化的二進制指數形式存儲的標準化的二進制指數形式存儲的。系統把一個浮。系統把一個浮點型數據分成小數部分和指數部分,分別存放。點型數據分成小數部分和指數部分,分別存放。263.3 浮點型數據(實數)浮點型常量的類型浮點型常量的類型v浮點型常量不分單、雙精度,都浮點型常量不分單、雙精度,都按雙精度按雙精度double型處理
26、型處理 v在浮點型常量后加字母在浮點型常量后加字母f或或F,(如,(如1.65f, 654.87F),認為它是),認為它是float 型型v如果把一個浮點型常量賦給一個單精度變量如果把一個浮點型常量賦給一個單精度變量f,系,系統給出警告,警告不影響連接和運行最后結果。但統給出警告,警告不影響連接和運行最后結果。但只取其結果前只取其結果前7位賦給浮點型變量位賦給浮點型變量f(一個單精度浮一個單精度浮點型變量只能保證的有效數字是點型變量只能保證的有效數字是7位,一個雙精度位,一個雙精度浮點型變量能保證的有效數字是浮點型變量能保證的有效數字是16位位)273.3 浮點型數據(實數)浮點型變量浮點型變
27、量v浮點型數據的舍入誤差:浮點型數據的舍入誤差:例例 浮點型數據的舍入誤差浮點型數據的舍入誤差#include void main()() float a; a=3.141592612; printf(af,a);); 運行結果運行結果:a=3.141593 :由于:由于a a是單精是單精度浮點型變量,度浮點型變量,只能提供只能提供7 7位有效位有效數字,后面幾位數字,后面幾位被忽略了被忽略了 283.3 浮點型數據(實數)例例3-4 3-4 浮點型數據的舍入誤差浮點型數據的舍入誤差#includevoid main() float a,b; a = 123456.789e5; b = a +
28、 20 ; printf(%f,%fn,a,b); 為什么輸出a和b的值相等?293.3 浮點型數據(實數)例例3-6 3-6 #includevoid main() float a; double b; a=33333.33333; b=33333.33333333333333; printf(a=%fnb=%fn,a,b); 運行結果運行結果:a=33333.332031b=33333.333333 303.4 字符型數據字符常量字符常量v定義定義:用用單引號單引號括起來的單個括起來的單個字符字符。v只能包含一個字符只能包含一個字符a a, , A A, , 1 1abcabc、“a a”
29、313.4 字符型數據字符常量字符常量v字符常量的字符常量的值值:該字符的:該字符的ASCIIASCII碼碼值。值。字符型數據與整字符型數據與整數等價數等價,等價整數值為該字符對應的,等價整數值為該字符對應的ASCIIASCII碼。字符型碼。字符型數據數據與與整型整型數據間可進行算術運算數據間可進行算術運算v轉義字符轉義字符: :反斜線反斜線“ ”后面跟一個或幾個字符后面跟一個或幾個字符v轉義字符是一種特殊的字符常量轉義字符是一種特殊的字符常量。轉義字符具有特定轉義字符具有特定的含義,不同于字符原有的意義,故稱的含義,不同于字符原有的意義,故稱“轉義轉義”字符。字符。例如,在前面各例題例如,在
30、前面各例題printfprintf函數的格式串中用到的函數的格式串中用到的“nn”就是一個轉義字符,其意義是就是一個轉義字符,其意義是“換行換行”。轉義字。轉義字符主要用來表示那些用一般字符不便于表示的控制代符主要用來表示那些用一般字符不便于表示的控制代碼碼。如如 A A6565, a a9797, 0 048 , 48 , nn1010例例 a=a=D D; ; / /* * a=68; a=68; * */ / x= x=A A+5; +5; / /* * x=65+5; x=65+5; * */ / s= s=! !+ +G G / /* * s=33+71;s=33+71;* */ /
31、323.4 字符型數據字符常量字符常量v轉義字符及其作用轉義字符及其作用 廣義地講,廣義地講,語言字符集語言字符集中的任何一個字符均可用中的任何一個字符均可用轉義字符來表示轉義字符來表示。表中的。表中的dddddd和和xhhxhh正是為此而提正是為此而提出的。出的。dddddd和和hhhh分別為八分別為八進制和十六進制的進制和十六進制的ASCIIASCII代碼代碼如如 101 -A 012 -n 102 -B x61 -a 60 -0 483 -( )333.4 字符型數據字符常量字符常量例例 轉義字符舉例轉義字符舉例#include void main()() printf(101 x42
32、Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C);; 說明說明:A- 101- x41-65運行結果:運行結果:(屏幕顯示屏幕顯示)A B CI say:“How are you?”C ProgramTurbo C343.4 字符型數據字符常量字符常量例例 轉義字符舉例轉義字符舉例#include void main()() printf(“Yb=n”); 運行結果:運行結果:屏幕顯示:屏幕顯示:=打印機輸出:打印機輸出:自學自學P40P40例例3-73-7 例例3-83-8353.4 字符型數據字符常量
33、字符常量v常用字符的常用字符的ASCIIASCII碼如下(需記?。捍a如下(需記?。?AZ 6590 a z 97122 09 4857 (空格(空格) 32 n (換行符換行符) 10 r (回車符回車符) 13特別注意特別注意: 字符字符0 等于整數等于整數48 , 字符字符0 等于整數等于整數0,即空操作字符即空操作字符 363.4 字符型數據字符變量字符變量v字符型變量用來存放字符常量,注意只能字符型變量用來存放字符常量,注意只能放一個字符。放一個字符。v字符變量的定義形式如下字符變量的定義形式如下:char c1,c2;v在程序中可以用下面語句對在程序中可以用下面語句對c1,c2賦
34、值賦值: c1a;c2 b ;v一個字符變量在內存中一個字符變量在內存中占一個字節占一個字節373.4 字符型數據字符數據在內存中的存儲形式及其使用方法字符數據在內存中的存儲形式及其使用方法v一個字符常量存放到一個字符變量中,實際上一個字符常量存放到一個字符變量中,實際上并不是把該字符的字型放到內存中去,而是并不是把該字符的字型放到內存中去,而是將將該字符的相應的該字符的相應的ASCII代碼放到存儲單元中代碼放到存儲單元中。例例a=x;a=x; b=y; b=y;01 111000011110 01a:b:383.4 字符型數據字符數據在內存中的存儲形式及其使用方法字符數據在內存中的存儲形式及
35、其使用方法v這樣使這樣使字符型數據和整型數據之間可以通用字符型數據和整型數據之間可以通用。 一個字符數據既可以以字符形式輸出一個字符數據既可以以字符形式輸出,也可以以整也可以以整數形式輸出數形式輸出。以字符形式輸出時以字符形式輸出時,系統先將存儲系統先將存儲單元中的單元中的ASCII碼轉換成相應字符,碼轉換成相應字符, 然后輸出。然后輸出。 以整數形式輸出時以整數形式輸出時,直接將,直接將ASCII碼作為整數輸碼作為整數輸出。也可以對字符數據進行算術運算,出。也可以對字符數據進行算術運算, 此時相此時相當于對它們的當于對它們的ASCII碼進行算術運算。碼進行算術運算。 39例例3-9 3-9
36、向字符變量賦以整數。向字符變量賦以整數。#include void main() char a,b; a=120; b=121; printf(“%c,%cn%d,%dn”,a,b,a,b); 在第在第4 4和第和第5 5行中,將整數行中,將整數120120和和121121分別賦給分別賦給a a和和b b,它的作用相當于以下兩個賦值語句:,它的作用相當于以下兩個賦值語句:a ax x b by y; ; 因為因為x x和和y y的的ASCIIASCII碼為碼為120120和和121121運行結果運行結果: x,yx,y 120,121 120,12140例例3-10 3-10 大小寫字母的轉換
37、大小寫字母的轉換#include void main() char a,b; a=x; b=y; a=a-32; b=b-32; printf(“c,cn%d,%dn”,a,b,a,b );); 程序的作用是將兩個小寫字母程序的作用是將兩個小寫字母x x和和y y轉換成大轉換成大寫字母寫字母X X和和Y Y。從。從ASCIIASCII代碼表中可以看到每一個代碼表中可以看到每一個小寫字母比它相應的大寫字母的小寫字母比它相應的大寫字母的ASCIIASCII碼大碼大3232。語言允許字符數據與整數直接進行算術運算。語言允許字符數據與整數直接進行算術運算。 運行結果運行結果: X,YX,Y 88,89
38、 88,89413.43.4 字符型數據字符型數據字符串常量字符串常量v字符串常量是一對字符串常量是一對雙引號雙引號括起來的括起來的字符序列字符序列。v合法的字符串常量合法的字符串常量: :“How do you do.”, “CHINA”“How do you do.”, “CHINA”, “ “a” a” , “$123.45”$123.45”v可以輸出一個字符串,如可以輸出一個字符串,如printf(“Howprintf(“How do you do.”) do you do.”);423.43.4 字符型數據字符型數據字符串常量字符串常量v是字符常量,是字符常量, “ “a”a”是字符
39、串常量,是字符串常量,二者不同。二者不同。如:如:假設被指定為字符變量假設被指定為字符變量 :char c;char c;c= a;c= a;c c “a”a” ;c c “CHINA”;CHINA”; :不能把一個字符串常量賦給一個字不能把一個字符串常量賦給一個字符變量。符變量。433.43.4 字符型數據字符型數據字符串常量字符串常量v存儲:存儲:每個字符串尾自動加一個每個字符串尾自動加一個 0 0 作為字符串結束標志作為字符串結束標志( (在寫字符串時,不在寫字符串時,不要加要加0)0)v字符常量與字符串常量不同字符常量與字符串常量不同字符串字符串“hello”hello”在內存在內存中
40、中h e l l o 0a a 0a“a”沒有沒有字符串變字符串變量量,用字符數,用字符數組存放組存放 字符串常量占的內存字字符串常量占的內存字節數等于字符串中字節節數等于字符串中字節數加數加1 1。但在輸出時不輸。但在輸出時不輸出出00。 44l形式形式l賦值賦值l存儲存儲45:lANSI CANSI C標準沒有具體規定以上各類數據所標準沒有具體規定以上各類數據所占內存的字節數而是由各計算機系統自行占內存的字節數而是由各計算機系統自行決定。決定。 Turbo CTurbo C中,中,intint型和型和shortshort型數型數據都是據都是2 2個字節,即個字節,即1616個二進制位。個二
41、進制位。longlong型數據是型數據是4 4個字節,個字節,3232位。而位。而VC+VC+則給則給shortshort型數據分配型數據分配2 2個字節,個字節,1616位,位,intint和和longlong型數據都是型數據都是4 4個字節,個字節,3232位位 。46:l對字符型都是對字符型都是1 1字節。字節。l對浮點數一般都是對浮點數一般都是floatfloat:4 4字節;字節;double:8double:8字節。字節。l可以用可以用sizeofsizeof( (類型名)或類型名)或sizeofsizeof( (變量名)變量名)測出所用測出所用C C系統給各類數據分配的字節數。系
42、統給各類數據分配的字節數。47上機調試程序上機調試程序1 1:#includestdio.h#include Void main()Void main() int int a; a; long b; long b; float f; float f; double d; double d; char c; char c;printf(nint:%dnlong:%dnfloat:%dndouble:printf(nint:%dnlong:%dnfloat:%dndouble:%dnchar:%dn%dnchar:%dn,sizeof(a),sizeof(b),sizeof,sizeof(a),s
43、izeof(b),sizeof(f),sizeof(d),sizeof(c(f),sizeof(d),sizeof(c);); 483.53.5 各類數值型數據間的混合運算各類數值型數據間的混合運算:整型(包括:整型(包括int,short,longint,short,long)、浮點型(包括)、浮點型(包括float,doublefloat,double)可以混合運算。因此,)可以混合運算。因此,整整型、浮點型、字符型數據間可以混合運算型、浮點型、字符型數據間可以混合運算。v在進行運算時,不同類型的數據要先轉換在進行運算時,不同類型的數據要先轉換成同一類型成同一類型, ,然后進行運算。然后進行運算。493.53.5 各類數值型數據間的混合運算各類數值型數據間的混合運算 必定的轉換必定的轉換運算對象類型不同運算對象類型不同時轉換時轉換轉換的一般規律:轉換的一般規律:轉換按數據長度增加的轉換按數據長度增加的方向進行,以保證精度不降低。方向進行,以保證精度不降低。這種類型轉換是由系統這種類型轉換是由系統自動進行的。自動進行的。503.5 各類數值型數據間的混合運算 char ch; int i; float f; double d;ch/i + f*
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水果蛋糕活動方案
- 正定黨建活動方案
- 核心價值觀共建活動方案
- 江蘇甜品活動方案
- 河南裝修公司活動方案
- 母校生日宣講活動方案
- 武漢電信機頂盒活動方案
- 森林撿雞蛋活動方案
- 植樹活動活動方案
- 殘聯義診活動方案
- 廣東省2025年普通高等學校招生全國統一考試模擬測試(一)物理試題及答案
- 2024年汽車維修工技能理論考試題庫含答案(滿分必刷)
- 腸息肉病人護理查房
- 2025年云南紅河弘毅農業發展限責任公司第一批員工招聘10人自考難、易點模擬試卷(共500題附帶答案詳解)
- 林下中藥材種植項目可行性研究報告
- 汽車4s店管理制度
- 電腦常見故障維修與電腦保養課件
- 電商平臺商家入駐流程及風險控制標準
- 2025-2030年中國聚碳酸酯板(陽光板)行業發展格局及投資前景規劃研究報告
- 2025年中國家居服行業市場深度分析及發展前景預測報告
- 創新發展研學旅游的執行路徑與策略
評論
0/150
提交評論