《《C語言程序設(shè)計》第3章數(shù)據(jù)類型、運(yùn)算符及表達(dá)式.ppt》由會員分享,可在線閱讀,更多相關(guān)《《C語言程序設(shè)計》第3章數(shù)據(jù)類型、運(yùn)算符及表達(dá)式.ppt(29頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、1,第三章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式,2,,,程序設(shè)計 = 數(shù)據(jù)結(jié)構(gòu) + 算法 C 語言的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型形式出現(xiàn)的,3,常 量(在程序運(yùn)行過程中,其值不能改變的量。 分為字面常量和符號常量) 字面常量或直接常量: 整常量:十進(jìn)制 +3 123 -12 0 12L 12l (3.0不是) 八進(jìn)制 以0開頭 0123(十進(jìn)制83)、-011(-9) 十六進(jìn)制 以0 x開頭 0 x123(291),-0 x12(-18) 實常量:十進(jìn)制小數(shù)點(diǎn)形式(必須有小數(shù)點(diǎn)) 0.2、.2、+2.0、-2.、0.0(2不是) e指數(shù)形式 1e2、1E2 (代表1102=100) 15e2、
2、1.5E3、5e-2,-.5e1,1E0, e前后必須有數(shù),e后必為整數(shù) 3e、e3、E、2.1e3.5 錯! 123.456,12.3456e1,1.23456e2,0.123456e3 均等價 規(guī)范化形式 (小數(shù)點(diǎn)左邊有且只有一位非零數(shù)字),4,字符常量: a、 A (兩者不同)、5 轉(zhuǎn)義字符:以反斜杠字符“”開頭的字符序列。 意思是將“”后面的字符轉(zhuǎn)換成另外意思。 n(換行,將當(dāng)前位置移到下一行開頭) r(回車,將當(dāng)前位置移到本行開頭) t(水平制表,跳到下一個Tab位置) b(退格,將當(dāng)前位置移到前一列) ddd (1到3位八進(jìn)制數(shù)所代表的字符) 101代表ASCI
3、I碼(八進(jìn)制)為101, 即ASCII碼(十進(jìn)制)為65的字符A xhh(1到2位十六進(jìn)制數(shù)所代表的字符) x41代表ASCII碼(十六進(jìn)制)為41, 即ASCII碼(十進(jìn)制)為65的字符A 0代表ASCII碼為0的控制字符,即“空操作”字符。,5,字符串常量:一對雙引號括起來的字符序列 如:”How do you do.” , ”CHINA” , ”a” printf(”This is a program.” ); 在內(nèi)存中 長度為6字符 注意: a 與 ”a” 不同 內(nèi)存中 a a 0 char c=”a” ; 是錯的 沒有字符串變量,字符
4、串需用字符數(shù)組存放。,0是字符串結(jié)束標(biāo)志,即ASCII碼為0的空操作字符,以判斷字符串是否結(jié)束。在寫字符串時不必加0,系統(tǒng)自動加。,,,,6,符號常量: 例3.1 #define PRICE 30 #define PI 3.1416 main() main() int num,t; float r,s; num=10; scanf(“%f”, 輸出:t=300 輸入:1 輸出s= 6.283184,,,,7,變 量: 定義:類型、名字、初始化 int i=1,j,k; short m,n; long c,d; unsigned
5、u,v; float a=3.6,b=7.1; double x,y; char w1,w2=A; 變量名:由字母、數(shù)字和下劃線組成 第一字符必為字母或下劃線 sum, X2, x2, student_name, _file 正確 M.D, $123, #abc, xy, 3t,, 不正確 注意,大小寫字母認(rèn)為是兩個不同的字符 對變量“先定義,后使用”,,告訴系統(tǒng)分配 內(nèi)存空間,8,6種整型變量: 有符號基本整型signed int 無符號基本整型unsigned int 有符號短整型signed short int 無符號短整型unsigned short int 有符號長整型signe
6、d long int 無符號短整型unsigned long int 其中,無符號整型變量中可以存放的正數(shù)的范圍比一般整 型變量中正數(shù)范圍擴(kuò)大一倍。 例如:int a;(-3276832767) unsigned int b;(065535) C語言沒具體規(guī)定以上各類數(shù)據(jù)所占內(nèi)存的字節(jié)數(shù),只要求 long型數(shù)據(jù)長度不短于int型,short型不長于int型。,,9,浮點(diǎn)型變量: 單精度(float) 雙精度(double) 長雙精度(long double),,10,字符型變量: 將一個字符常量放到一個字符變量中,實際上并不是把該 字符本身放到內(nèi)存中去,而是將該字符的相應(yīng)ASCII代碼放 到
7、存儲單元中。 這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。 例一: char c1,c2; c1=97; c2=98; printf(“%c %cn”,c1,c2); a b printf(“%d %dn”,c1,c2); 97 98 例二:int i; char c; i=a; c=97;,,11,Turbo C,12,13,14,優(yōu)先級 運(yùn)算符 結(jié)合方向 1 ( ) -(指針結(jié)構(gòu)成員運(yùn)算符) . (結(jié)構(gòu)成員運(yùn)算符) 從左到右 2 一元運(yùn)算 ! ++ -- + - * printf(”%dn”,i++); 輸出結(jié)果3 i=4
8、 i=3; printf(”%dn”,++i); 輸出結(jié)果4 i=4 i=3; printf(”%dn”,-i++); 輸出結(jié)果-3 i=4 ++與--的結(jié)合方向是自右至左 -i++ 等價于 -(i++),不是 (-i)++ 注意:++與--的左右必須是變量,而不能是常量和表達(dá)式 5++,(a+b)++,(-k)++,--(a+4) 都是錯的 例: 對于i=3 k=i++; 執(zhí)行后k值為3,i為4 k=++i; 執(zhí)行后k值為4,i為4,18,19,,376 以整數(shù)形式輸出為-2,i的值也是-2。,20,,21,22,23,24,25,/* p66,ex0309:
9、求算術(shù)表達(dá)式的值 */ (1)設(shè) x=2.5, a=7, y=4.7 x+a%3*(int)(x+y)%2/4 2.5+7%3*(int)(2.5+4.7)%2/4 2.5+ 1 * 7 % 2 / 4 2.5+ 1/4 2.5 (2)設(shè)a=2, b=3, x=3.5, y=2.5 (float)(a+b)/2+(int)x%(int)y (float)(2+3)/2+(int)3.5%(int)2.5 5.0 / 2 + 3 % 2 25 + 1 3.5,26,/* p66,ex0310: 寫出程序運(yùn)行結(jié)果 */ main( ) int i=8,j=10,m,n; m=++i; n=j++; printf(%d,%d,%d,%dnn,i,j,m,n); 輸出結(jié)果: 9,11,9,10,i=9, m=9,n=10,j=11,,27,28,/* 補(bǔ)充題:求算術(shù)表達(dá)式的值 */ 1. 7*2%3+5/2*4 14%3 + 2*4 2+8 10 2. 3/5+1.3 0 + 1.3 1.3 3. 13%5+d 3 + 100 103 或 g 4. (b=5,b++,b-3,b*2) b=5,b=6,3,12 12,29,