C語言數(shù)據(jù)類型.ppt_第1頁
C語言數(shù)據(jù)類型.ppt_第2頁
C語言數(shù)據(jù)類型.ppt_第3頁
C語言數(shù)據(jù)類型.ppt_第4頁
C語言數(shù)據(jù)類型.ppt_第5頁
已閱讀5頁,還剩57頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章 數(shù)據(jù)類型 運算符 和 表達式,第二章 數(shù)據(jù)類型、運算符和表達式,內(nèi)容提要 數(shù)據(jù)類型 常量與變量 運算符與表達式,2.1 數(shù)據(jù)類型,數(shù)據(jù)類型總表,數(shù)據(jù)類型決定: 1. 數(shù)據(jù)占內(nèi)存字節(jié)數(shù) 2. 數(shù)據(jù)取值范圍 3. 其上可進行的操作,說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機器硬件不同而不同, 上表以IBM PC機為例。,基本數(shù)據(jù)類型,2.1 數(shù)據(jù)類型,2.2 常量與變量,數(shù)據(jù)是程序的處理對象 C語言將數(shù)據(jù)分為常量與變量,2.2.1 常量 1.常量的定義及分類 定義:程序運行的過程中,其值不能改變 的量。 分類: 整型常量 實型常量 字符常量 字符串常量 符號常量,2.2 常量與變量,2.整型常量(既整常數(shù)) 三種形式: 十進制整數(shù):由數(shù)字09和正負號表示.如 123,-456,0 八進制整數(shù):由數(shù)字0開頭,后跟數(shù)字07表示.如0123,011 十六進制整數(shù):由0x開頭,后跟09,af,AF表示.如0x123,0Xff,轉(zhuǎn)換成十進制數(shù)的方法: 0123 = 1x82 +2x81+3x80 =( 83 )10 0x123 = 1x162 +2x161+3x160= ( 291 )10 0Xff = 15x161+15x160=( 255 )10,2.2 常量與變量,整型常量的說明 (1)空白字符不可以出現(xiàn)在整數(shù)數(shù)字之間 (2)根據(jù)其值所在范圍確定其數(shù)據(jù)類型 (3)在整常量后加字母l或L,認(rèn)為它是 long int 型常量,例如 30000 為int型 65536 為long int 型 79L、012L 為long int 型,2.2 常量與變量,3.實型常量 實常數(shù)或浮點數(shù),是一個十進制表示的符號實數(shù) 表示形式: 十進制小數(shù)形式 digits.digits 如0.123, .123, 123.0, 0.0, 123. 指數(shù)形式(包括整數(shù)部分、尾數(shù)部分和指數(shù)部分 ) digits .digits E|e + | - digits 小數(shù)點之前是整數(shù)部分,小數(shù)點之后是尾數(shù)部分,小數(shù)點在沒有尾數(shù)時可省略。 如12.3e3 ,123E2,2.2 常量與變量,實型常量的說明 (1)實型常量采用十進制小數(shù)形式表示時,必須有 小數(shù)點。例如:123. 是實型常量,而123是整型 常量 (2)采用指數(shù)形式表示時,在E或e之前必須要有數(shù) 字,且之后的指數(shù)必須為整數(shù)。例如:E6、.e6、 e 等都是不合法的 (3)實型常量的整數(shù)部分為0時可以省略,如下形式 是允許的:.57, .0075e2, -.125, -.175E-2 (4)所有的實型常量均被看作是雙精度類型(double),2.2 常量與變量,4.字符常量 定義:用單引號括起來的單個普通字符或轉(zhuǎn)義字符。 分為一般字符常量和特殊字符常量 一般字符常量: 如a、9、!等。單引號只起定界作用并不表示字符本身,中間的字符可以是除單引號()和反斜杠( )以外的數(shù)字、字母等C語言字符集中包含的所有可顯示字符。 特殊字符常量(也叫轉(zhuǎn)義字符) 是C語言中表示字符的一種特殊形式,其含義為將反斜杠()后面的字符轉(zhuǎn)換成另外的意義。,2.2 常量與變量,字符常量的值:該字符的ASCII碼值,如 A65, a97, 048 , n10,2.2 常量與變量,aaa,13,如 101 -A 012 -n 376 - x61 -a 060 -0,例 轉(zhuǎn)義字符舉例 int main() printf(“101 x42 Cn“); printf(“I say:“How are you?“n“); printf(“C Programn“); printf(“Turbo C“); ,運行結(jié)果:(屏幕顯示) A B C Isay:”How are you?” C Program Turbo C,2.2 常量與變量,字符常量與字符串常量不同,5.字符串常量 定義:用雙引號(“”)括起來的字符序列 存儲:每個字符串尾自動加一個 0 作為字符串結(jié)束標(biāo)志,例: char ch; ch=“A”;,例: char ch; ch=A;,2.2 常量與變量,6.符號常量 (1)標(biāo)識符 定義:用來標(biāo)識變量、常量、函數(shù)等的字符序列 組成: 只能由字母、數(shù)字、下劃線組成,且第一個字母必須是字母或下劃線 大小寫敏感 不能使用關(guān)鍵字 長度:最長32個字符 命名原則: 見名知義 不宜混淆 如1與l, o與0,2.2 常量與變量,在C語言中,允許將程序中的常量定義為一個標(biāo)識符,稱為符號常量。在使用符號常量前必須先加以定義,一般情況下,符號常量使用大寫英文字母表示。,其定義的一般形式為: #define 例如: #define PRICE 35,2.2 常量與變量,2.2.2 變量 概念:其值可以改變的量 變量名與變量值 變量定義的一般格式: 數(shù)據(jù)類型 變量1,變量2,變量n; 變量初始化:定義時賦初值 變量的使用:先定義,后使用,決定分配字節(jié)數(shù) 和數(shù)的表示范圍,合法標(biāo)識符,例: int a,b,c; float data;,例: 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; ,2.2 常量與變量,變量定義位置:一般放在函數(shù)開頭,2.2 常量與變量,與常量類似,變量也有不同的類型,一般可以分為以下三種類型: 整型變量 實型變量 字符變量,2.2 常量與變量,1.整型變量 (1)整型變量的分類 基本型 短整型 長整型 無符號整型,基本型:類型說明符為int,在內(nèi)存中占2個字節(jié)。,短整型:類型說明符為short int或short,所占字節(jié)和取值范圍均與基本型相同。,長整型:類型說明符為long int或long,在內(nèi)存中占4個字節(jié)。,無符號整型:類型說明符為unsigned。 . 無符號基本型:類型說明符為 unsigned int或 unsigned。 . 無符號短整型:類型說明符為 unsigned short。 . 無符號長整型:類型說明符為 unsigned long。,2.2 常量與變量,例2-1 整型變量的使用 #include int main() int x,y,z; x=10;y=20; z=x+y; printf(“x+y=%dn”,z); return 0; 輸出結(jié)果:x+y=30,(2)整型變量的定義與使用,2.2 常量與變量,int x; x=10; 則變量x的值10在內(nèi)存中的存放形式: int x; x=-10; 則變量x的值10在內(nèi)存中的存放形式:,(3)整型數(shù)據(jù)在內(nèi)存中的存放形式,2.2 常量與變量,例2-2 整型數(shù)據(jù)的溢出問題 #include int main() int x, y; x=32767; y=x+1; printf(“%d,%dn“,x,y); return 0; 運行結(jié)果:-32768 原因:一個int型變量只能容納-32768到32767范 圍內(nèi)的數(shù),無法表示超過這個范圍的數(shù)。,(4)整型數(shù)據(jù)的溢出,2.2 常量與變量,2.實型變量 (1)實型變量的分類 單精度實型:類型說明符為float,在內(nèi)存中占4個字節(jié),提供7位有效數(shù)字。 雙精度實型:類型說明符為double,在內(nèi)存中占8個字節(jié),提供1 5 1 6位有效數(shù)字。,例 float a; a=111111.111; /* a=111111.1*/ double b; b=111111.111; /* b=111111.111*/,2.2 常量與變量,例2-3實型變量的使用 #include int main() float x,y,z; x=10; y=20; z=x+y ; printf(“x+y=%fn”,z); return 0; 運行結(jié)果:x+y=30.000000,(2)實型變量的定義與使用,2.2 常量與變量,例 a=D; /* a=68; */ x=A+5; /* x=65+5; */ s=!+G /* s=33+71; */,字符變量存放字符ASCII碼 char與int數(shù)據(jù)間可進行算術(shù)運算,沒有字符串變量,用字符數(shù)組存放,(3)字符變量,2.2 常量與變量,#include int main( ) char c1, c2; /* 定義c1,c2為字符型變量 */ c1 = 97; c2 = 98; /* 將整數(shù)97和98分別賦給c1和c2 */ printf(”%c,%cn”, c1, c2); /* 以字符形式輸出c1和c2 */ printf(”%d,%d”, c1, c2); /* 輸出c1和c2的ASCII碼值 */ printf(”%d”, c1 + c2); return 0; 運行結(jié)果如下: a,b 97,98,2.2 常量與變量,例 #define PRICE 12.5 main() int num=3; float total; char ch1,ch2=D; total=num*PRICE; ch1=ch2-A+a; printf(“total=%f,ch1=%cn”,total,ch1); ,運行結(jié)果: total=37.500000, ch1=d,(4)變量的初始化,2.2 常量與變量,運算符的分類,2.3 運算符與表達式,定義:由常量、變量、函數(shù)、運算符和括號組合起來的、符合C語法規(guī)則的式子稱為表達式。 一個表達式有一個值以及其對應(yīng)的類型 表達式求值首先進行優(yōu)先級高的運算再進行優(yōu)先級低的運算,然后對于優(yōu)先級相同的運算按結(jié)合方向進行運算。 結(jié)合方向:左結(jié)合、右結(jié)合 例如:,2.3 運算符與表達式,2.3.1算術(shù)運算符及算術(shù)表達式 1.基本算術(shù)運算符: + - * / % 結(jié)合方向:從左向右 優(yōu)先級:(高)- -* / % - + - 說明: “-”可為單目運算符時,右結(jié)合性 兩整數(shù)相除,結(jié)果為整數(shù),如果兩整數(shù)中有一個是負數(shù),舍入規(guī)則為“向零取整” 如果運算的兩個數(shù)中有一個是實型,則結(jié)果為double型 %要求兩側(cè)均為整型數(shù)據(jù),例 5/2 = 2 -5/2.0 = -2.5 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 (),2.3 運算符與表達式,#include int main( ) printf(”10-9/6*5 = %d”, 10 9 / 6 * 5); return 0; 運行結(jié)果如下: 10-9/6*5 = 5,#include main() int x=5,y; y=+x; printf(“%dn“,y); 輸出結(jié)果: 6,例2-5 計算表達式10-9/6*5,2.3 運算符與表達式,例2-6 計算表達式10-3.0/2的值 #include int main( ) printf(”10-3.0/2=%f”, 10 - 3.0 / 2); 運行結(jié)果如下: 10-3.0/2=8.500000,2.3 運算符與表達式,2.算術(shù)表達式 定義:用算術(shù)運算符和括號將運算對象連接起來的、符合C語法規(guī)則的式子稱為算術(shù)表達式。其中的運算對象包括常量、變量、函數(shù)等。 例如:x+y、(x*2)/y、sin(x)sin(y)等都是算術(shù)表達式。,2.3 運算符與表達式,(1) (x+y)h2 (2) s(s-a)(s-b)(s-c) (3) (x+1)2+(y-1)2 在C語言中,其合法的算術(shù)表達式如下: (1) (x+y)*h/2.0 (2) s*(s-a)*(s-b)*(s-c) (3) (x+1)*(x+1)+(y-1)*(y-1),例2-7 寫出下列數(shù)學(xué)表達式對應(yīng)的合法的C算術(shù) 表達式,2.3 運算符與表達式,種類: = = != 結(jié)合方向:自左向右 優(yōu)先級別: 關(guān)系運算符優(yōu)先級低于算術(shù)運算符,2.3.2 關(guān)系運算符及關(guān)系表達式 1.關(guān)系運算符,例:ca+b 等價于 c(a+b) ab!=c (ab)!=c a=bc a=(bc),2.3 運算符與表達式,關(guān)系運算結(jié)果:1(真)和 0(假) 例2-8 計算下列關(guān)系表達式的值 (1) 1010 (2) 10=10 (3) 1010!=10 (4) 3*8-9!=5+7%3,2.3 運算符與表達式,2.關(guān)系表達式 關(guān)系表達式的值:是邏輯值“真(True)”或“假(False)”,用1或0表示 關(guān)系表達式例子 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc,/表達式值1,/表達式值1,/表達式值0,/d=1,/f=0,2.3 運算符與表達式,種類: ! & | 邏輯運算真值表 優(yōu)先級 ?。ǜ?2) & (11) | (低 12),2.3.3邏輯運算符及邏輯表達式 1.邏輯運算符,2.3 運算符與表達式,例2-9 假設(shè)x = 10,y = 20,分析下列邏輯表達式。 (1) !x (2) x&y (3) !x|y (4) !x+5|10%y=x-10y,【例2-10】 寫出滿足要求的合法的C邏輯 表達式。 (1) x表達0到9的字符 (2) x 和y都大于0 (3) x是偶數(shù)并且x100,2.3 運算符與表達式,位運算是指進行二進制位的運算 例如:將一個存儲單元中的各二進制位左移、右移,兩個數(shù)按位相加等。,說明 (1)位運算符中除 - 以外,均為二目(元)運算符,即要求兩側(cè)各有一個運算量。 (2)運算量只能是整型或字符型的數(shù)據(jù),不能為實型數(shù)據(jù)。,附:位運算符,2.3 運算符與表達式,位運算中的“&”、“|”和“-”的真值表與邏輯運算等價,唯一不同的是位運算是逐位進行運算的。 (異或位運算符)的真值表:,2.3 運算符與表達式,定義 :用邏輯運算符 短路特性:邏輯表達式求解時,并非所有的邏輯運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時,才執(zhí)行該運算符。,例 a (m=ab)&(n=cd) /結(jié)果 m=0,n=1,2. 邏輯表達式,2.3 運算符與表達式,1.賦值運算符 賦值符號“”就是賦值運算符,它的作用是將一個數(shù)據(jù)賦給一個變量。,例2-11 假設(shè)變量x為整型,計算下列賦值表達式的值。 (1) x = y = 10 (2) x = 10+ (y = 20) (3) x = 10+ (y = 20) / (z = 30),2.3.4 賦值運算符及賦值表達式,2.3 運算符與表達式,如果賦值運算符兩側(cè)的數(shù)據(jù)類型不一致,但都是數(shù)值型或字符型時,系統(tǒng)要進行類型轉(zhuǎn)換。 將浮點型數(shù)據(jù)(包括單、雙精度)賦給整型變量時,舍棄浮點數(shù)的小數(shù)部分。 如:為整型變量,執(zhí)行“i=3.56;”的結(jié)果是使的值為,以整數(shù)形式存儲在整型變量中。 將整型數(shù)據(jù)賦給單、雙精度變量時,數(shù)值不變,但以浮點數(shù)形式存儲到變量中,即用0補足有效數(shù)字位。 如:i為float型變量,執(zhí)行“i=3;”的結(jié)果i=3.000000,以單精度浮點數(shù)形式存儲到i中。,賦值運算符類型轉(zhuǎn)換,2.3 運算符與表達式,將一個double型數(shù)據(jù)賦給float變量時,截取其前面7位有效數(shù)字,存放到float變量的存儲單元(4個字節(jié))中。但應(yīng)注意數(shù)值范圍不能溢出。如果將一個float型數(shù)據(jù)賦給double變量時,數(shù)值不變,有效位數(shù)擴展到16位,在內(nèi)存中以8個字節(jié)存儲。,2.3 運算符與表達式,字符型數(shù)據(jù)賦給整型變量時,由于字符只占1個字節(jié),而整型變量為個字節(jié),因此將字符數(shù)據(jù)(個二進位)放到整型變量存儲單元的低位中。 第一種情況: 如果字符型為無符號的字符型,則將字符的位放到整型變量低位,高位補零。 第二種情況: 如果字符型為帶符號的,則將字符的位放到整型變量低位,高位補符號位,即(符號擴展)。若字符最高位為0,則整型變量高8位補0;若字符最高位為1,則高8位全補1。,2.3 運算符與表達式,將一個int、short、long型數(shù)據(jù)賦給一char型變量,只將其低8位原封不動地送到char型變量(即截斷)。 將帶符號的整型數(shù)據(jù)(int型)賦給long型變量時,要進行符號擴展,將整型數(shù)的16位送到long型低16位中;反之,若將一個long型數(shù)據(jù)賦給一個int型變量,只將long型數(shù)據(jù)中低16位原封不動地送到整型變量(即截斷)。,2.3 運算符與表達式,將unsigned int型數(shù)據(jù)賦給long int型變量時,不存在符號擴展問題,只需將高位補即可。將unsigned int型數(shù)據(jù)賦給int型變量時,將數(shù)據(jù)原封不動的送到整型變量中,但如果數(shù)據(jù)范圍超過相應(yīng)整型的范圍,會出現(xiàn)錯誤。 將非unsigned型數(shù)據(jù)賦給長度相同的unsigned型變量,也是原樣照賦(連原有的符號位也作為數(shù)值一起傳送)。,2.3 運算符與表達式,定義:由賦值運算符將一個變量和一個表達式連接起來的式子稱為賦值表達式。 例如:x10、xy10。 說明:賦值運算符左側(cè)必須是變量,不能是 常量或表達式。 賦值轉(zhuǎn)換規(guī)則:使賦值號 右邊表達式值自動轉(zhuǎn)換 成其左邊變量的類型。,例 float f; int i; i=10; f=i; 則 f=10.0,錯誤: 3=x-2*y; a+b=3;,2.賦值表達式,2.3 運算符與表達式,賦值表達式的值與變量值相等,且可嵌套。,例: a=12; a+=a-=a*a,/a=-264 等價于a=a+(a=a-(a*a),2.3 運算符與表達式,復(fù)合的賦值運算符 在“=”前面加上其他運算符 種類 += -= *= /= %= = &= = |= 一般形式: 變量 雙目運算符=表達式 它等效于: 變量=變量 運算符 表達式,例2-12 假設(shè)變量x = 10,y = 20,計算下列復(fù)合的賦值表達式的值。 (1) x += 10 (2) x *= y + 20 (3) x += x -= x / 10,2.3 運算符與表達式,自增、自減運算符+ - 作用:使變量值加1或減1 優(yōu)先級:+/-高于 -(單目減) 種類: 前置 +i, -i (先執(zhí)行i+1或i-1,再使用i值) 后置 i+,i-(先使用i值,再執(zhí)行i+1或i-1),int x, y; x = 10; y = +x; 此時,變量y的值為11。 如果程序改為: x = 10; y = x+; 則變量y的值為10。,2.3.5 增量運算符,2.3 運算符與表達式,一般形式: expr1 ? expr2 : expr3 由常量、變量、函數(shù)、運算符和括號組合起來的、符合C語法規(guī)則的式子稱為表達式。 執(zhí)行過程,2.3.6 條件運算符及條件表達式,2.3 運算符與表達式,結(jié)合方向:自右向左 例2-13 假設(shè)變量 x = 10,y = 20, z = 30,計算下列條件表達

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論