




已閱讀5頁,還剩57頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第二章 數據類型 運算符 和 表達式,第二章 數據類型、運算符和表達式,內容提要 數據類型 常量與變量 運算符與表達式,2.1 數據類型,數據類型總表,數據類型決定: 1. 數據占內存字節數 2. 數據取值范圍 3. 其上可進行的操作,說明:數據類型所占字節數隨機器硬件不同而不同, 上表以IBM PC機為例。,基本數據類型,2.1 數據類型,2.2 常量與變量,數據是程序的處理對象 C語言將數據分為常量與變量,2.2.1 常量 1.常量的定義及分類 定義:程序運行的過程中,其值不能改變 的量。 分類: 整型常量 實型常量 字符常量 字符串常量 符號常量,2.2 常量與變量,2.整型常量(既整常數) 三種形式: 十進制整數:由數字09和正負號表示.如 123,-456,0 八進制整數:由數字0開頭,后跟數字07表示.如0123,011 十六進制整數:由0x開頭,后跟09,af,AF表示.如0x123,0Xff,轉換成十進制數的方法: 0123 = 1x82 +2x81+3x80 =( 83 )10 0x123 = 1x162 +2x161+3x160= ( 291 )10 0Xff = 15x161+15x160=( 255 )10,2.2 常量與變量,整型常量的說明 (1)空白字符不可以出現在整數數字之間 (2)根據其值所在范圍確定其數據類型 (3)在整常量后加字母l或L,認為它是 long int 型常量,例如 30000 為int型 65536 為long int 型 79L、012L 為long int 型,2.2 常量與變量,3.實型常量 實常數或浮點數,是一個十進制表示的符號實數 表示形式: 十進制小數形式 digits.digits 如0.123, .123, 123.0, 0.0, 123. 指數形式(包括整數部分、尾數部分和指數部分 ) digits .digits E|e + | - digits 小數點之前是整數部分,小數點之后是尾數部分,小數點在沒有尾數時可省略。 如12.3e3 ,123E2,2.2 常量與變量,實型常量的說明 (1)實型常量采用十進制小數形式表示時,必須有 小數點。例如:123. 是實型常量,而123是整型 常量 (2)采用指數形式表示時,在E或e之前必須要有數 字,且之后的指數必須為整數。例如:E6、.e6、 e 等都是不合法的 (3)實型常量的整數部分為0時可以省略,如下形式 是允許的:.57, .0075e2, -.125, -.175E-2 (4)所有的實型常量均被看作是雙精度類型(double),2.2 常量與變量,4.字符常量 定義:用單引號括起來的單個普通字符或轉義字符。 分為一般字符常量和特殊字符常量 一般字符常量: 如a、9、!等。單引號只起定界作用并不表示字符本身,中間的字符可以是除單引號()和反斜杠( )以外的數字、字母等C語言字符集中包含的所有可顯示字符。 特殊字符常量(也叫轉義字符) 是C語言中表示字符的一種特殊形式,其含義為將反斜杠()后面的字符轉換成另外的意義。,2.2 常量與變量,字符常量的值:該字符的ASCII碼值,如 A65, a97, 048 , n10,2.2 常量與變量,aaa,13,如 101 -A 012 -n 376 - x61 -a 060 -0,例 轉義字符舉例 int main() printf(“101 x42 Cn“); printf(“I say:“How are you?“n“); printf(“C Programn“); printf(“Turbo C“); ,運行結果:(屏幕顯示) A B C Isay:”How are you?” C Program Turbo C,2.2 常量與變量,字符常量與字符串常量不同,5.字符串常量 定義:用雙引號(“”)括起來的字符序列 存儲:每個字符串尾自動加一個 0 作為字符串結束標志,例: char ch; ch=“A”;,例: char ch; ch=A;,2.2 常量與變量,6.符號常量 (1)標識符 定義:用來標識變量、常量、函數等的字符序列 組成: 只能由字母、數字、下劃線組成,且第一個字母必須是字母或下劃線 大小寫敏感 不能使用關鍵字 長度:最長32個字符 命名原則: 見名知義 不宜混淆 如1與l, o與0,2.2 常量與變量,在C語言中,允許將程序中的常量定義為一個標識符,稱為符號常量。在使用符號常量前必須先加以定義,一般情況下,符號常量使用大寫英文字母表示。,其定義的一般形式為: #define 例如: #define PRICE 35,2.2 常量與變量,2.2.2 變量 概念:其值可以改變的量 變量名與變量值 變量定義的一般格式: 數據類型 變量1,變量2,變量n; 變量初始化:定義時賦初值 變量的使用:先定義,后使用,決定分配字節數 和數的表示范圍,合法標識符,例: 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 常量與變量,變量定義位置:一般放在函數開頭,2.2 常量與變量,與常量類似,變量也有不同的類型,一般可以分為以下三種類型: 整型變量 實型變量 字符變量,2.2 常量與變量,1.整型變量 (1)整型變量的分類 基本型 短整型 長整型 無符號整型,基本型:類型說明符為int,在內存中占2個字節。,短整型:類型說明符為short int或short,所占字節和取值范圍均與基本型相同。,長整型:類型說明符為long int或long,在內存中占4個字節。,無符號整型:類型說明符為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; 輸出結果:x+y=30,(2)整型變量的定義與使用,2.2 常量與變量,int x; x=10; 則變量x的值10在內存中的存放形式: int x; x=-10; 則變量x的值10在內存中的存放形式:,(3)整型數據在內存中的存放形式,2.2 常量與變量,例2-2 整型數據的溢出問題 #include int main() int x, y; x=32767; y=x+1; printf(“%d,%dn“,x,y); return 0; 運行結果:-32768 原因:一個int型變量只能容納-32768到32767范 圍內的數,無法表示超過這個范圍的數。,(4)整型數據的溢出,2.2 常量與變量,2.實型變量 (1)實型變量的分類 單精度實型:類型說明符為float,在內存中占4個字節,提供7位有效數字。 雙精度實型:類型說明符為double,在內存中占8個字節,提供1 5 1 6位有效數字。,例 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; 運行結果: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數據間可進行算術運算,沒有字符串變量,用字符數組存放,(3)字符變量,2.2 常量與變量,#include int main( ) char c1, c2; /* 定義c1,c2為字符型變量 */ c1 = 97; c2 = 98; /* 將整數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; 運行結果如下: 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); ,運行結果: total=37.500000, ch1=d,(4)變量的初始化,2.2 常量與變量,運算符的分類,2.3 運算符與表達式,定義:由常量、變量、函數、運算符和括號組合起來的、符合C語法規則的式子稱為表達式。 一個表達式有一個值以及其對應的類型 表達式求值首先進行優先級高的運算再進行優先級低的運算,然后對于優先級相同的運算按結合方向進行運算。 結合方向:左結合、右結合 例如:,2.3 運算符與表達式,2.3.1算術運算符及算術表達式 1.基本算術運算符: + - * / % 結合方向:從左向右 優先級:(高)- -* / % - + - 說明: “-”可為單目運算符時,右結合性 兩整數相除,結果為整數,如果兩整數中有一個是負數,舍入規則為“向零取整” 如果運算的兩個數中有一個是實型,則結果為double型 %要求兩側均為整型數據,例 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; 運行結果如下: 10-9/6*5 = 5,#include main() int x=5,y; y=+x; printf(“%dn“,y); 輸出結果: 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); 運行結果如下: 10-3.0/2=8.500000,2.3 運算符與表達式,2.算術表達式 定義:用算術運算符和括號將運算對象連接起來的、符合C語法規則的式子稱為算術表達式。其中的運算對象包括常量、變量、函數等。 例如:x+y、(x*2)/y、sin(x)sin(y)等都是算術表達式。,2.3 運算符與表達式,(1) (x+y)h2 (2) s(s-a)(s-b)(s-c) (3) (x+1)2+(y-1)2 在C語言中,其合法的算術表達式如下: (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 寫出下列數學表達式對應的合法的C算術 表達式,2.3 運算符與表達式,種類: = = != 結合方向:自左向右 優先級別: 關系運算符優先級低于算術運算符,2.3.2 關系運算符及關系表達式 1.關系運算符,例:ca+b 等價于 c(a+b) ab!=c (ab)!=c a=bc a=(bc),2.3 運算符與表達式,關系運算結果:1(真)和 0(假) 例2-8 計算下列關系表達式的值 (1) 1010 (2) 10=10 (3) 1010!=10 (4) 3*8-9!=5+7%3,2.3 運算符與表達式,2.關系表達式 關系表達式的值:是邏輯值“真(True)”或“假(False)”,用1或0表示 關系表達式例子 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 運算符與表達式,種類: ! & | 邏輯運算真值表 優先級 !(高 2) & (11) | (低 12),2.3.3邏輯運算符及邏輯表達式 1.邏輯運算符,2.3 運算符與表達式,例2-9 假設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是偶數并且x100,2.3 運算符與表達式,位運算是指進行二進制位的運算 例如:將一個存儲單元中的各二進制位左移、右移,兩個數按位相加等。,說明 (1)位運算符中除 - 以外,均為二目(元)運算符,即要求兩側各有一個運算量。 (2)運算量只能是整型或字符型的數據,不能為實型數據。,附:位運算符,2.3 運算符與表達式,位運算中的“&”、“|”和“-”的真值表與邏輯運算等價,唯一不同的是位運算是逐位進行運算的。 (異或位運算符)的真值表:,2.3 運算符與表達式,定義 :用邏輯運算符 短路特性:邏輯表達式求解時,并非所有的邏輯運算符都被執行,只是在必須執行下一個邏輯運算符才能求出表達式的解時,才執行該運算符。,例 a (m=ab)&(n=cd) /結果 m=0,n=1,2. 邏輯表達式,2.3 運算符與表達式,1.賦值運算符 賦值符號“”就是賦值運算符,它的作用是將一個數據賦給一個變量。,例2-11 假設變量x為整型,計算下列賦值表達式的值。 (1) x = y = 10 (2) x = 10+ (y = 20) (3) x = 10+ (y = 20) / (z = 30),2.3.4 賦值運算符及賦值表達式,2.3 運算符與表達式,如果賦值運算符兩側的數據類型不一致,但都是數值型或字符型時,系統要進行類型轉換。 將浮點型數據(包括單、雙精度)賦給整型變量時,舍棄浮點數的小數部分。 如:為整型變量,執行“i=3.56;”的結果是使的值為,以整數形式存儲在整型變量中。 將整型數據賦給單、雙精度變量時,數值不變,但以浮點數形式存儲到變量中,即用0補足有效數字位。 如:i為float型變量,執行“i=3;”的結果i=3.000000,以單精度浮點數形式存儲到i中。,賦值運算符類型轉換,2.3 運算符與表達式,將一個double型數據賦給float變量時,截取其前面7位有效數字,存放到float變量的存儲單元(4個字節)中。但應注意數值范圍不能溢出。如果將一個float型數據賦給double變量時,數值不變,有效位數擴展到16位,在內存中以8個字節存儲。,2.3 運算符與表達式,字符型數據賦給整型變量時,由于字符只占1個字節,而整型變量為個字節,因此將字符數據(個二進位)放到整型變量存儲單元的低位中。 第一種情況: 如果字符型為無符號的字符型,則將字符的位放到整型變量低位,高位補零。 第二種情況: 如果字符型為帶符號的,則將字符的位放到整型變量低位,高位補符號位,即(符號擴展)。若字符最高位為0,則整型變量高8位補0;若字符最高位為1,則高8位全補1。,2.3 運算符與表達式,將一個int、short、long型數據賦給一char型變量,只將其低8位原封不動地送到char型變量(即截斷)。 將帶符號的整型數據(int型)賦給long型變量時,要進行符號擴展,將整型數的16位送到long型低16位中;反之,若將一個long型數據賦給一個int型變量,只將long型數據中低16位原封不動地送到整型變量(即截斷)。,2.3 運算符與表達式,將unsigned int型數據賦給long int型變量時,不存在符號擴展問題,只需將高位補即可。將unsigned int型數據賦給int型變量時,將數據原封不動的送到整型變量中,但如果數據范圍超過相應整型的范圍,會出現錯誤。 將非unsigned型數據賦給長度相同的unsigned型變量,也是原樣照賦(連原有的符號位也作為數值一起傳送)。,2.3 運算符與表達式,定義:由賦值運算符將一個變量和一個表達式連接起來的式子稱為賦值表達式。 例如:x10、xy10。 說明:賦值運算符左側必須是變量,不能是 常量或表達式。 賦值轉換規則:使賦值號 右邊表達式值自動轉換 成其左邊變量的類型。,例 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 運算符與表達式,復合的賦值運算符 在“=”前面加上其他運算符 種類 += -= *= /= %= = &= = |= 一般形式: 變量 雙目運算符=表達式 它等效于: 變量=變量 運算符 表達式,例2-12 假設變量x = 10,y = 20,計算下列復合的賦值表達式的值。 (1) x += 10 (2) x *= y + 20 (3) x += x -= x / 10,2.3 運算符與表達式,自增、自減運算符+ - 作用:使變量值加1或減1 優先級:+/-高于 -(單目減) 種類: 前置 +i, -i (先執行i+1或i-1,再使用i值) 后置 i+,i-(先使用i值,再執行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 由常量、變量、函數、運算符和括號組合起來的、符合C語法規則的式子稱為表達式。 執行過程,2.3.6 條件運算符及條件表達式,2.3 運算符與表達式,結合方向:自右向左 例2-13 假設變量 x = 10,y = 20, z = 30,計算下列條件表達
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國兔子養殖項目創業計劃書
- 中國紅棗深加工項目創業計劃書
- 中國基圍蝦養殖項目創業計劃書
- 中國康復器具項目創業計劃書
- 2025商務英語對話之合同洽談
- 中國南天竺項目創業計劃書
- 中國冬瓜項目創業計劃書
- 中國獨尾草項目創業計劃書
- 四川醫療項目創業計劃書
- 文化創意產業合作保密合同
- 南京二模 南京市2025屆高三年級第二次模擬考試 數學試卷
- 《AIGC應用實戰:寫作、繪圖、視頻制作、直播》-課件 第七章 即夢的使用方法;第八章 AI直播
- 2025年中國智慧城市行業市場運行格局及投資前景預測分析報告
- 2025年中考數學總復習《商品銷售問題》專項測試卷(附答案)
- 山西財經大學華商學院《Java程序設計》2023-2024學年第二學期期末試卷
- 2025年AI在中醫診斷中的創新應用探討
- 油氣管道輸送試題及答案
- 直飲機管理制度
- 醫院DRG培訓課件
- 農業經濟的基礎試題及答案
- 2024年中國計量發展白皮書
評論
0/150
提交評論