Lect_fchap06_回顧數(shù)據(jù)類型和表達式_第1頁
Lect_fchap06_回顧數(shù)據(jù)類型和表達式_第2頁
Lect_fchap06_回顧數(shù)據(jù)類型和表達式_第3頁
Lect_fchap06_回顧數(shù)據(jù)類型和表達式_第4頁
Lect_fchap06_回顧數(shù)據(jù)類型和表達式_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Chap 6 回顧回顧 數(shù)據(jù)類型和表達式數(shù)據(jù)類型和表達式 本章要點本章要點6.1 數(shù)據(jù)的存儲和基本數(shù)據(jù)類型數(shù)據(jù)的存儲和基本數(shù)據(jù)類型n各種基本數(shù)據(jù)類型的常量形式各種基本數(shù)據(jù)類型的常量形式 6.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出6.3 類型轉(zhuǎn)換類型轉(zhuǎn)換6.4 表達式表達式數(shù)據(jù)類型和表達式數(shù)據(jù)類型和表達式n數(shù)據(jù)類型數(shù)據(jù)類型基本數(shù)據(jù)類型基本數(shù)據(jù)類型n整型整型intn實型(浮點型)實型(浮點型)float doublen字符型字符型char構(gòu)造數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型數(shù)組、結(jié)構(gòu)、聯(lián)合、枚舉數(shù)組、結(jié)構(gòu)、聯(lián)合、枚舉指針類型指針類型空類型空類型n運算符數(shù)據(jù)運算符數(shù)據(jù) 表達式表達式6.1.1 數(shù)據(jù)的存儲整型數(shù)據(jù)數(shù)

2、據(jù)的存儲整型數(shù)據(jù)設整數(shù)在內(nèi)存中用設整數(shù)在內(nèi)存中用2個字節(jié)存儲個字節(jié)存儲1 000 0001 1000 00010 000 0001 1000 0001符號位符號位1:負數(shù):負數(shù)0:正數(shù):正數(shù)數(shù)值的表示方法原碼數(shù)值的表示方法原碼 反碼反碼 補碼補碼n正數(shù)正數(shù)的原碼、反碼和補碼相同的原碼、反碼和補碼相同1 的補碼的補碼n負數(shù)負數(shù)的原碼、反碼和補碼不同的原碼、反碼和補碼不同 -1的的補碼補碼原碼原碼 反碼反碼 補碼補碼32767n補碼補碼 0 111 1111 1111 1111-32767n原碼原碼 1 111 1111 1111 1111n反碼反碼 1 000 0000 0000 0000 原碼

3、取反原碼取反(符號位保持不變)(符號位保持不變)n補碼補碼 1 000 0000 0000 0001 反碼反碼1-32768 = -32767-1n補碼補碼 1 000 0000 0000 0000(2個字節(jié)的存儲單元能表示的最小負數(shù)個字節(jié)的存儲單元能表示的最小負數(shù)) -32768 -1 0 1 32767 32767 0111 1111 1111 1111 1 0000 0000 0000 0001 0 0000 0000 0000 0000 -1 1111 1111 1111 1111 -2 1111 1111 1111 1110 -32767 1000 0000 0000 0001 -3

4、2768 1000 0000 0000 0000實型和字符型數(shù)據(jù)的存儲實型和字符型數(shù)據(jù)的存儲n實型數(shù)據(jù)的存儲實型數(shù)據(jù)的存儲-1.2345e+02符號位符號位 階碼階碼 尾數(shù)尾數(shù)n字符型數(shù)據(jù)的存儲字符型數(shù)據(jù)的存儲一個字節(jié)存儲一個字節(jié)存儲ASCII碼。碼。A 的的ASCII碼為碼為65,內(nèi)存中存放形式:,內(nèi)存中存放形式:0 1 0 0 0 0 0 16.1.2 基本基本數(shù)據(jù)類型數(shù)據(jù)類型基本基本數(shù)據(jù)類型數(shù)據(jù)類型整型整型擴展的整數(shù)類型:擴展的整數(shù)類型:short long unsigned int有符號整型有符號整型 無符號整型無符號整型 數(shù)據(jù)長度數(shù)據(jù)長度int unsigned int 16或或32

5、位位short int unsigned short int 16位位long int unsigned long int 32位位有符號有符號 short 1 000 0000 0000 0000 -32768 -2150 111 1111 1111 1111 32767 215-1無符號無符號 unsigned short0000 0000 0000 0000 01111 1111 1111 1111 65535 216-1整數(shù)類型的取值范圍整數(shù)類型的取值范圍int 32位位 -2147483648 2147483647 -231 231-1short int 16位位 -32768 32

6、767 -215 215-1long int 32位位 -2147483648 2147483647 -231 231-1unsigned int 32位位 0 4294967295 0 232-1unsigned short int 16位位 0 65535 0 216-1unsigned long int 32位位 0 4294967295 0 232-1整型常量(整數(shù))整型常量(整數(shù))n整數(shù)的表示整數(shù)的表示三種表現(xiàn)形式:三種表現(xiàn)形式:十進制整數(shù):正、負號,十進制整數(shù):正、負號,09,首位不是,首位不是0例:例: 10,123八進制整數(shù):正、負號,八進制整數(shù):正、負號,07,首位是,首位是

7、0例:例: 010,0123十六進制整數(shù):正、負號,十六進制整數(shù):正、負號,09,af,AF,前綴是,前綴是0 x,0X例:例:0 x10,0X123整數(shù)的表示整數(shù)的表示123 = 01111011 (B) 二進制二進制 =173 (O) 八進制八進制 =7B (X) 十六進制十六進制123 0173 0 x7b10 012 0XAn不能超出整型數(shù)據(jù)的取值范圍不能超出整型數(shù)據(jù)的取值范圍n比長整型數(shù)還要大的數(shù)只能用實數(shù)來表示比長整型數(shù)還要大的數(shù)只能用實數(shù)來表示整數(shù)的類型整數(shù)的類型判斷整數(shù)的類型判斷整數(shù)的類型n整數(shù)后的字母后綴整數(shù)后的字母后綴123L long123U unsigned123LU

8、unsigned long基本基本數(shù)據(jù)類型數(shù)據(jù)類型字符型字符型n字符具有數(shù)值特征字符具有數(shù)值特征A 65 0100 0001 n整型變量和字符變量的定義和賦值可以互整型變量和字符變量的定義和賦值可以互換換 【 ASCII碼碼范圍】范圍】 char c; c = A; 或或 c = 65; int i; i = 65; 或或 i = A;對字符進行運算 對字符的ASCII 碼進行運算如:A+1字符型常量字符型常量n字符常量字符常量a、A、9、+、 $ (注意:單引號)(注意:單引號) nASCII字符集字符集每個字符:惟一的次序值(每個字符:惟一的次序值( ASCII 碼)碼)0 9 升序排列升

9、序排列A Za z區(qū)分數(shù)字字符和數(shù)字區(qū)分數(shù)字字符和數(shù)字 1 1轉(zhuǎn)轉(zhuǎn)義義字字符符n反斜杠后跟一個字符或數(shù)字反斜杠后跟一個字符或數(shù)字n字符常量,代表字符常量,代表一個一個字符字符 n 101 x41 An所有字符都可以用轉(zhuǎn)義字符表示所有字符都可以用轉(zhuǎn)義字符表示基本基本數(shù)據(jù)類型數(shù)據(jù)類型實型實型 存儲存儲 數(shù)據(jù)精度數(shù)據(jù)精度 取值范圍取值范圍 (有效數(shù)字有效數(shù)字)float 4字節(jié)字節(jié) 七七/八八位位 (10-38 1038)double 8字節(jié)字節(jié) 十六十六位位 (10-308 10308 )數(shù)據(jù)精度和取值范圍數(shù)據(jù)精度和取值范圍n數(shù)據(jù)精度數(shù)據(jù)精度 與與 取值范圍取值范圍是兩個不同的概念:是兩個不同的概

10、念:float x = 1234567.89;雖在取值范圍內(nèi),但無法精確表達。雖在取值范圍內(nèi),但無法精確表達。 float y = 1.2e55;y 的精度要求不高,但超出取值范圍。的精度要求不高,但超出取值范圍。n并不是所有的實數(shù)都能在計算機中精確表示并不是所有的實數(shù)都能在計算機中精確表示n 實型常量的類型都是實型常量的類型都是double 1234567.80實型常量(實數(shù)、浮點數(shù))實型常量(實數(shù)、浮點數(shù))n實數(shù)的表示實數(shù)的表示浮點表示法浮點表示法0.123 123.4 12. .12科學計數(shù)法科學計數(shù)法6.026E-27 1.2e+30 1E-5n實數(shù)的類型實數(shù)的類型double6.2.

11、1 整型數(shù)據(jù)的輸入和輸出整型數(shù)據(jù)的輸入和輸出6.2.2 實型實型數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出6.2.3 字符型字符型數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出 6.2 數(shù)數(shù)據(jù)的輸入和輸出據(jù)的輸入和輸出 6.2.1 整型數(shù)據(jù)的輸入輸出整型數(shù)據(jù)的輸入輸出printf (格式控制格式控制, 輸出參數(shù)輸出參數(shù)1, . , 輸出參數(shù)輸出參數(shù)n);scanf (格式控制格式控制, 輸入?yún)?shù)輸入?yún)?shù)1, . , 輸入?yún)?shù)輸入?yún)?shù)n);格式控制說明格式控制說明 % 十進制十進制 八進制八進制 十六進制十六進制int %d %o %xlong %ld %lo %lxunsigned %u %o %xunsigned

12、long %lu %lo %lx輸出整型數(shù)據(jù)示例(輸出整型數(shù)據(jù)示例(1)# include int main(void) printf(%d, %o, %xn, 10, 10, 10); printf(%d, %d, %dn, 10, 010, 0 x10); printf(%d, %xn, 012, 012); return 0; 00101010, 12, a10, 8, 1610, a輸入整型數(shù)據(jù)示例(輸入整型數(shù)據(jù)示例(2)# include int main(void) int a, b; printf(input a, b:); scanf(%o%d , &a, &b

13、); printf(%d%5dn, a, b); /*%5d指定變量指定變量b的輸出寬度為的輸出寬度為5 */ printf(%x, %dn, a, b); return 0; input a, b: 17 1715 17f, 17%x%d6.2.2 實型數(shù)據(jù)的輸入和輸出實型數(shù)據(jù)的輸入和輸出n輸入輸入 scanf()float:%f 或或%e 以小數(shù)或指數(shù)形式輸入一個單精度浮點數(shù)以小數(shù)或指數(shù)形式輸入一個單精度浮點數(shù)double: %lf或或%le 以小數(shù)或指數(shù)形式輸入一個以小數(shù)或指數(shù)形式輸入一個雙精度雙精度浮點數(shù)浮點數(shù)n輸出輸出 printf()float 和和double使用相同的格式控制說

14、明使用相同的格式控制說明%f以小數(shù)形式輸出浮點數(shù),保留以小數(shù)形式輸出浮點數(shù),保留6位小數(shù)位小數(shù)%e以指數(shù)形式輸出以指數(shù)形式輸出實型數(shù)據(jù)輸出格式示例實型數(shù)據(jù)輸出格式示例# include int main(void) double d = 3.1415926; printf(%f, %en, d, d); printf(%5.3f, %5.2f, %.2fn, d, d, d); return 0; 3.141593, 3.14159e+003.142, 3.14, 3.14一共一共5位,小數(shù)部分位,小數(shù)部分3位,小數(shù)點占位,小數(shù)點占1位位實型數(shù)據(jù)輸入輸出示例實型數(shù)據(jù)輸入輸出示例假定假定floa

15、t的精度為的精度為7位,位,double的精度為的精度為16位位 # include int main(void) float f; double d; printf(input f, d:); scanf(%f%lf, &f, &d); printf(f = %fn d = %f n, f, d); d = 1234567890123.12; printf(d = %f n, d); return 0;input f, d: 1234567890123.123456 1234567890123.123456f = 1234567954432.000000d = 1234567

16、890123.123540d = 1234567890123.1201206.2.3 字符型數(shù)據(jù)輸入輸出字符型數(shù)據(jù)輸入輸出nscanf() 和和 printf() %cngetchar() 和和 putchar()輸入輸出字符示例輸入輸出字符示例# include int main(void) char ch1, ch2; ch1=getchar(); ch2=getchar(); putchar(ch1); putchar(#); putchar(ch2); return 0;AbA#b輸入輸出字符示例輸入輸出字符示例# include int main(void) char ch1, ch

17、2, ch3; scanf(%c%c%c, &ch1, &ch2, &ch3); printf(%c%c%c%c%c, ch1, #, ch2, #, ch3); return 0;AbCA#b#CA bCA# #b【例例6-1】單詞加密解析。輸入一個英文單詞(由單詞加密解析。輸入一個英文單詞(由6個小寫字母組成),按個小寫字母組成),按照下列規(guī)則加密:照下列規(guī)則加密:1)先將小寫字母轉(zhuǎn)換為對應的大寫字母,先將小寫字母轉(zhuǎn)換為對應的大寫字母,2)再將大寫字母的再將大寫字母的ASCII碼對碼對10整除后取其余數(shù),整除后取其余數(shù),從而得到一個六位整數(shù)密碼。從而得到一個六位整數(shù)

18、密碼。#include int main(void) int i;char ch_lower, ch_upper; for(i = 1; i = a & ch_lower %c-%dn, ch_lower, ch_upper, ch_upper%10); return 0;fridayf-F-0r-R-2i-I-3d-D-8a-A-5y-Y-9字符運算字符運算n大小寫英文字母轉(zhuǎn)換大小寫英文字母轉(zhuǎn)換 b - a = B - A z - a = Z - A m M a-AA-alm - a + A = MlM - A + a = ml8 - 0 = 8l8 + 0 = 8n數(shù)字字符和數(shù)字數(shù)

19、字字符和數(shù)字轉(zhuǎn)換轉(zhuǎn)換 9 - 0 = 9 - 0 9 = 9 + 08 88-8 8-8n不同類型數(shù)據(jù)的混合運算,先轉(zhuǎn)換為同一不同類型數(shù)據(jù)的混合運算,先轉(zhuǎn)換為同一類型,再運算。類型,再運算。6.3.1 自動類型轉(zhuǎn)換自動類型轉(zhuǎn)換6.3.2 強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換6.3 類型轉(zhuǎn)換類型轉(zhuǎn)換6.3.1 自動類型轉(zhuǎn)換(非賦值運算)自動類型轉(zhuǎn)換(非賦值運算)n水平方向:自動水平方向:自動n垂直方向:低垂直方向:低 高高 高高 double float unsigned long long unsigned unsigned short 低低 int char, short自動類型轉(zhuǎn)換(非賦值運算)自動類

20、型轉(zhuǎn)換(非賦值運算)A + 12 10.05 65 77 66.95高高 double float unsigned long long unsigned unsigned short 低低 int char, short自動類型轉(zhuǎn)換(賦值運算)自動類型轉(zhuǎn)換(賦值運算)變量變量 = 表達式表達式n計算賦值運算符右側(cè)計算賦值運算符右側(cè)表達式表達式的值的值n將賦值運算符右側(cè)將賦值運算符右側(cè)表達式表達式的值賦給左側(cè)的的值賦給左側(cè)的變量變量1.1.賦值時,表達式值類型賦值時,表達式值類型自動轉(zhuǎn)換自動轉(zhuǎn)換成賦值號左側(cè)成賦值號左側(cè)變量的類型變量的類型自動類型轉(zhuǎn)換(賦值運算)自動類型轉(zhuǎn)換(賦值運算)doub

21、le x;x = 1;x = ?short a = 1000;char b = A;long c;c = a + b;c = ?int ai;ai = 2.56;ai = ?short bi;bi = 0 x12345678Lbi = ?6.3.2 強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換運算符強制類型轉(zhuǎn)換運算符(類型名類型名) 表達式表達式(double)3(int)3.8(double)(5/2)(double)5/23.032.02.5強制類型轉(zhuǎn)換示例強制類型轉(zhuǎn)換示例# include int main(void) int i; double x; x = 3.8; i = (int) x;

22、 printf(double)(int)x = %fn, (double)(int)x); printf( x mod 3 = %dn, (int)x % 3); return 0;(double)(int)x = 3.000000 x mod 3 = 0n算術(shù)表達式算術(shù)表達式n賦值表達式賦值表達式n關(guān)系表達式關(guān)系表達式n邏輯表達式邏輯表達式n條件表達式條件表達式n逗號表達式逗號表達式n 6.4 表達式表達式6.4.1 算術(shù)表達式算術(shù)運算符算術(shù)表達式算術(shù)運算符n單目單目 + - + -n雙目雙目 + - * / %注意注意/ 整數(shù)除整數(shù),得整數(shù)整數(shù)除整數(shù),得整數(shù)1/4 = 0,10/3 = 3

23、% 模模(求余求余): 針對整型數(shù)據(jù)針對整型數(shù)據(jù)5%6 = 5,9%4 = 1,100%4 = 0+ 和和 n單目運算符,單目運算符, +10 和和 10n雙目運算符,雙目運算符, x+10 和和 y 10兩側(cè)操作數(shù)類型不同時,自動轉(zhuǎn)換后再運算。兩側(cè)操作數(shù)類型不同時,自動轉(zhuǎn)換后再運算。自增運算符自增運算符+和自減運算符和自減運算符-int n;n+ +n n- -n (只適合變量運算)(只適合變量運算)使變量的值增使變量的值增1或減或減1+n n+ n = n + 1-n n- n = n - 1取變量的值作為表達式的值取變量的值作為表達式的值+n:n = n + 1;取取n值作為表達式值作為

24、表達式 +n 的值的值n+:取取n值作為表達式值作為表達式 n+ 的值;的值;n = n + 1自增運算和自減運算自增運算和自減運算int n, m;n=2;m=+n;n=2;m=n+;n=3n=3m=3m=2m=nn=n+1n=n+1m=n算術(shù)運算符的優(yōu)先級和結(jié)合性算術(shù)運算符的優(yōu)先級和結(jié)合性單目單目 + - + -雙目雙目 * / %雙目雙目 + -高高低低從右向左從右向左-5 + 3%2 = (-5) + (3%2) = -43 * 5 % 3 = (3*5) % 3 = 0-i+ -(i+)寫出寫出C表達式表達式數(shù)學式數(shù)學式 C算術(shù)表達式算術(shù)表達式s(s-a)(s-b)(s-c)(x+2

25、)e2xaacbb2426.4.2 賦值賦值表達式表達式n賦值運算符賦值運算符 =優(yōu)先級較低,結(jié)合性從右向左優(yōu)先級較低,結(jié)合性從右向左x = y = 3 x = (y = 3)賦值賦值表達式表達式int n; double x, y;n = 3.14 * 2;x = 10 / 4;x = (y = 3);注意類型轉(zhuǎn)換復合賦值運算符復合賦值運算符n復合賦值運算符復合賦值運算符 += -= *= /= %=n賦值表達式賦值表達式 變量變量 賦值運算符賦值運算符 表達式表達式x += exp 等價于等價于 x = x + expx *= y - 3x = x * (y-3) 6.4.3 關(guān)系表達式關(guān)

26、系運算符關(guān)系表達式關(guān)系運算符n比較兩個操作數(shù),比較的結(jié)果:比較兩個操作數(shù),比較的結(jié)果:真真 假假x y x y x = y x != yn關(guān)系運算的結(jié)果關(guān)系運算的結(jié)果真真 1 假假 0 n優(yōu)先級優(yōu)先級 算術(shù)運算符算術(shù)運算符 = = != 賦值運算符賦值運算符n左結(jié)合左結(jié)合關(guān)系表達式關(guān)系表達式n用用關(guān)系運算符關(guān)系運算符將將2個個表達式表達式連接起來的式子連接起來的式子哪些是關(guān)系表達式哪些是關(guān)系表達式?a b = cd = a bch a + 1d = a + b cb - 1 = a != c3 = x = 3 & x 0) ? x+2 : x*x;if ( x0 ) y=x+2;els

27、e y=x*x; x+2 x0y = x2 xb) ? a : b;if ( ab ) z = a;else z = b;6.4.6 逗號逗號表達式表達式表達式表達式1, 表達式表達式2, , 表達式表達式n先計算表達式,然后計算表達式先計算表達式,然后計算表達式,,最,最后計算表達式后計算表達式n的值,并將表達式的值,并將表達式n的值作為逗的值作為逗號表達式的值號表達式的值.int a, b, c;(a=2), (b=3), (c=a+b);逗號運算符的優(yōu)先級最低,左結(jié)合逗號運算符的優(yōu)先級最低,左結(jié)合a=2, b=3, c=a+bsum = 0;for(i = 0; i = 100; i+)

28、 sum = sum + i;逗號逗號表達式的用途表達式的用途for(i = 0, sum = 0; i = 100; i+) sum = sum + i;for(i = 0, sum = 0; i = 100; i+) sum += i;n 位邏輯運算位邏輯運算n移位運算移位運算n復合位賦值運算復合位賦值運算6.4.7 位運算位運算位邏輯運算位邏輯運算x=0 00000000 00000000 y=3 00000000 00000011x & y 00000000 00000000 x | y 00000000 00000011x y 00000000 000000111010 0101 =1111 注意區(qū)分:注意區(qū)分:& 和和 |&am

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論