版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Chap 2 基本數(shù)據(jù)類型和表達式,數(shù)據(jù)類型基本數(shù)據(jù)類型整型int實型(浮點型)float double字符型char構(gòu)造數(shù)據(jù)類型數(shù)組、結(jié)構(gòu)、聯(lián)合、枚舉指針類型空類型對數(shù)據(jù)的操作-運算運算符和表達式,Chap 2 基本數(shù)據(jù)類型和表達式,常量和變量整數(shù)類型實數(shù)類型字符類型表達式數(shù)據(jù)的存儲和類型轉(zhuǎn)換,2.1 常量和變量,2.1.1 常量常量(常數(shù)):數(shù)據(jù)123 (整型) 4.56 (實型)
2、’A’ (字符型)符號常量:用標識符表示的常量數(shù)據(jù)?:PI?:EPS通常用大寫字母,例2-1 求球的表面積和體積,# include void main( ){ float r, s, v; scanf("%f", &r); s=4.0*3.14*r*r ; v=4.0/3.0*3.14*r*r*r ; printf("s=%f
3、, v=%f\n", s, v);},s=4.0*3.14159*r*r ; v=4.0/3.0*3.14159*r*r*r ;,例2-2 符號常量,# define PI 3.14# include void main( ){ float r, s, v; scanf("%f", &r); s=4.0*PI*r*r ; v=4.0/3
4、.0*PI*r*r*r ; printf("s=%f, v=%f\n", s, v);},# define PI 3.14159,2.1.2 變量,C語言中的量常量(常數(shù)):數(shù)據(jù)符號常量:用標識符表示的常量數(shù)據(jù)在程序的運行過程中,其值不能被改變變量:存放數(shù)據(jù)的工作單元在程序的運行過程中,其值可以改變,變量的定義,變量定義的一般形式 類型名 變量表;變量名:小
5、寫字母,見名知義類型名:整型int實型(浮點型)float double字符型char,變量的定義,int i, j, k; (定義i, j, k為整型變量)char c; (定義c為字符型變量)float x, y;double area, length;變量名代表內(nèi)存中的一個存儲單元用于存放該變量的值該存儲單元的大小由變量的數(shù)據(jù)類型決定,變量的定義與使用,變量必須 先
6、定義,后使用。# include void main( ){ int x, y; x = 3; y = x*x ; printf(“%d”, y ) ;},,,一個變量名只能定義一次。 變量一般都定義在程序的頭上,不能定義在程序的中間或后面。,變量的使用,變量: 先定義,后使用 先賦值,后引用#
7、 include void main( ){ int x, y; x = 3; y = x*x ; printf(“%d”, y ) ;},,變量的賦值,賦初值:在定義變量時對它賦值 int a = 5, b = 3;賦值表達式:int a, b;a = 5;b=3;輸入函數(shù): scanf(“%d%d”, &a, &b);,2.2 整數(shù)類型,2.2
8、.1 整型常量(整數(shù))三種表現(xiàn)形式十進制整數(shù):正、負號,0-9,首位不是0例:10,123八進制整數(shù):正、負號,0-7,首位是0例:010,012316進制整數(shù):正、負號,0-9,a-f,A-F,前綴是0x,0X例:0x10,0x123,123 = 1111011 (B) 二進制 =173 (O) 八進制 =7B (X) 十六進制int i=0173;int j=0x7b;
9、int k=123;例:16 020 0x10 10 012 0XA,,2.2.2 整型變量,int ai, bi, ci, di = 0;ai = 1;bi = -27;ci = 012;整型變量的值是整數(shù),它的取值范圍有限最小取值范圍 [-32768,32767],2.2.3 整型數(shù)據(jù)的輸入輸出,printf(格式控制, 輸出參數(shù)1, ... , 輸出參數(shù)n);scanf
10、(格式控制, 輸入?yún)?shù)1, ... , 輸入?yún)?shù)n);格式控制說明 %… %d:以十進制形式輸入、輸出整數(shù) %o:以八進制形式輸入、輸出整數(shù) %x:以十六進制形式輸入、輸出整數(shù),例2-3,# include void main( ){ printf("%d, %o, %x\n", 10, 10, 10); printf(&quo
11、t;%d, %d, %d\n", 10, 010, 0x10); printf("%d, %x\n", 012, 012); },運行結(jié)果為: 10, 12, a 10, 8, 16 10, a,例2-4,# include void main( ){ int a, b; scanf("%o%d",
12、&a, &b); printf("%d%5d\n", a, b); printf("%x, %d\n", a, b); },輸入:17 17,運行結(jié)果為:15 17f, 17,2.3 實型數(shù)據(jù),2.3.1 實型常量(實數(shù))浮點表示:0.123 123.4 1.科學計數(shù)法:123e4 0.2e-12.3.2 實型變量單精度浮點型fl
13、oat x, y, z;雙精度浮點型double u, v, w;,4字節(jié)存儲8字節(jié)存儲,數(shù)據(jù)精度和取值范圍,數(shù)據(jù)精度 取值范圍單精度 七位有效數(shù)字 ±(10-38 - 1038)雙精度 十六位有效數(shù)字 ±(10308 - 10308 ),數(shù)據(jù)精度 與 取值范圍是兩個不同的概念: float x = 1.23456789;
14、 float y = 123456789; 雖在數(shù)據(jù)表示范圍內(nèi),但無法精確表達。 float z = 1.2e55 z的精度要求不高,但數(shù)據(jù)表示范圍超出。并不是所有的實數(shù)都能在計算機中精確表示。 實型常量的類型都是double,x=1.234568y=1.234567e8,2.3.3 實型數(shù)據(jù)的輸入和輸出,輸出 printf( )float 和double使用相同的格式控制說明%f:以小數(shù)形式輸出浮
15、點數(shù),保留6位小數(shù)。 %e:以指數(shù)形式輸出 1位整數(shù).5 位小數(shù)e3位指數(shù),例2-5 實型數(shù)據(jù)的輸出,# include void main( ){ float f = 123.45; double d = 3.1415926; printf("%f, %e\n", f, f); printf("%f, %e\
16、n", d, d); printf("%5.3f, %5.2f, %.2f\n", d, d, d); } 一共5位,小數(shù)3位,小數(shù)點一位,運行結(jié)果為:123.450000, 1.23450e+023.141593, 3.14159e+003.142, 3.14, 3.14,,,例2-6,假定float的精度為7位,double的精度為16位 # inc
17、lude void main( ) { float f; double d1, d2; f = 1234567890123.123456; d1 = 1234567890123.123456; d2 = 1234567890123.12; printf("f = %f \n d1 = %f \n d2 = %f \n", f, d1, d2);},運行結(jié)果為
18、: f = 1234567954432.000000 d1 = 1234567890123.123540 d2 = 1234567890123.120120,,實型數(shù)據(jù)的輸入,scanf( )float 和double使用不同的格式控制說明%f和%e相同 %f : 以小數(shù)或指數(shù)形式輸入一個單精度浮點數(shù)%e%lf: 以小數(shù)或指數(shù)形式輸入一個雙精度浮點數(shù)%le,例2-7,# include v
19、oid main( ){ float f1; double d1; scanf("%f%lf", &f1, &d1); printf("f1 = %f \n d1 = %f \n", f1, d1);},輸入:12 1234567.12345,運行結(jié)果為:f1=12.000000d1=1234567.123450,2.4 字符類型,2.
20、4.1 字符常量’a’ ’A’ ’9’ ’+’ ’$' ASCII字符集:列出所有可用的字符每個字符:惟一的次序值( ASCII 碼)'0'-'9''A'-'Z''a'-'z',2.4.1 字符常量,字符的存儲在內(nèi)存中,每個字符占用一個字節(jié),存儲該字符的ASCII碼字
21、符 ASCII碼 內(nèi)存'A' 65 0100 0001 'B' 66 0100 0010 字符的數(shù)值特征字符可以當整數(shù)用,ASCII碼'A'+1 =?,2.4.2 字符變量,char c1, c2, c3;c1='2';
22、c2='#';c3='A';或c3=65;,int i;i=65;或i='A';整型變量和字符變量的定義和賦值可以互換【 ASCII碼范圍】,2.4.3 字符型數(shù)據(jù)輸入輸出,scanf( )和printf( ) %cchar ch;scanf("%c", &ch);printf("%c", ch);
23、getchar( )和putchar( )char ch;ch=getchar( );putchar(ch);輸入輸出一個字符,例2-9,# include void main( ){ char ch1, ch2; ch1=getchar(); ch2=getchar(); putchar(ch1); putchar('#'); putchar(ch2)
24、;},運行結(jié)果為:A#b,輸入:Ab,例2-10,# include void main( ){ char ch1, ch2, ch3; scanf("%c%c%c", &ch1, &ch2, &ch3); printf("%c%c%c%c%c", ch1, '#', ch2, '#', ch3);},
25、運行結(jié)果1為:A#b#C,輸入1:AbC,運行結(jié)果2為:A# #b,輸入2:A bC,輸入數(shù)據(jù)包括字符和數(shù)值的混合# include void main( ){ int i; char c; float x ; scanf("%d%c%f", &i, &c, &x ); printf( "%d %c %f", i,
26、c, x );},輸入:3a1.2輸出:3 a 1.200000,數(shù)據(jù)之間不能用空格等間隔,也不需要單引號,例2-11,已知:'b'的ASCII碼98# include void main( ){ printf("%c,%d\n", 'b', 'b'); printf("%c,%d\n", 98, 98);
27、 printf("%c,%d\n", 97, 'b'-1);},運行結(jié)果為:b,98b,98a,97,# include void main( ){ char ch='b'; printf("%c,%d\n", ch, ch);},printf'b' %c putchar98 %d142
28、 %o62 %x,scanf'b' %c getchar98 %d142 %o62 %x,scanf("%c", &ch);,字符運算,大小寫英文字母轉(zhuǎn)換 'b' - 'a' = 'B' - 'A' …… 'z' - 'a' = 'Z
29、9; - 'A' 'm' ?? 'M',數(shù)字字符和數(shù)字 9 - 0 = '9' - '0' '9' = 9 + '0''8' ?? 8,'a'-'A''A'-'a','0','m' - '
30、a' + 'A' = 'M''M' - 'A' + 'a' = 'm','8' - '0' = 88 + '0' = '8',2.4.4 轉(zhuǎn)義字符,反斜杠后跟一個字符或數(shù)字字符常量,代表一個字符 '\n' '\101' &
31、#39;\x41' 'A'所有字符都可以用轉(zhuǎn)義字符表示,2.5 表達式,2.5.1 算術(shù)表達式算術(shù)運算符單目 + - ++ --雙目 + - * / %注意! % 模(求余) 整型數(shù)據(jù)5%6=5,9%4=1,100%4=0 / 整數(shù)除整數(shù),得整數(shù)1/2=0,9/4=2雙目運算符兩側(cè)操作數(shù)的類型要相同,算術(shù)運算符的優(yōu)先級和結(jié)合性,單目 + - ++ --雙目 *
32、 / %雙目 + -,從右向左,-5+3%2 = (-5)+(3%2) = -43*5%3 = (3*5)%3 = 0-i++,-(i++),算術(shù)表達式,例2-15 數(shù)學式 --> C表達式s(s-a)(s-b)(s-c)(x+2)e2x,s*(s-a)*(s-b)*(s-c),(x+2)*exp(2*x),2.5.2 賦值表達式,賦值運算符 =賦值表達式變量=表達式計算賦值運算符
33、右側(cè)表達式的值將賦值運算符右側(cè)表達式的值賦給左側(cè)的變量將賦值運算符左側(cè)的變量的值作為表達式的值n = 2;n = n+1;賦值運算符的優(yōu)先級和結(jié)合性優(yōu)先級較低,從右向左x=y=3;,x=(y=3),例 大小寫字母轉(zhuǎn)換,輸入一個小寫字母,輸出對應(yīng)的大寫字母。# include void main( ){ char ch ; scanf("%c", &ch);
34、 ch = ch - 'a' + 'A'; printf("%c\n", ch); },,2.5.3 逗號表達式,表達式1, 表達式2, ……,表達式n先計算表達式1,然后計算表達式2,……,最后計算表達式n的值,并將表達式n的值作為逗號表達式的值.逗號運算符的優(yōu)先級最低,從左向右a = (3+5 , 4*6 ) a = 3+5 , 4*6,a=24a=8
35、,自增運算符和自減運算符,自增運算符 ++ 和自減運算符 --int n,n++ ++n n-- --n (只適合變量運算)使變量的值增1或減1++n n++ n=n+1--n n-- n=n-1取變量的值作為表達式的值++n:n=n+1;取n值作為表達式++n的值n++:取n值作為表達式n++的值;n=n+1,自增運算和自減運算,int i, k;i=2;k=++i;i=2
36、;k=i++;,i=3,i=3,k=3,k=2,k=ii=i+1,i=i+1k=i,例2-17,#include void main( ){ int a, b, c; b=5; c=5; a=++b+c--; printf("%d,%d,%d\n", a, b, c); a=b---c; printf(
37、"%d,%d,%d\n", a, b, c); a=-b+++c; printf("%d,%d,%d\n", a, b, c);},b=b+1, a=b+c, c=c-1,a=b-c, b=b-1,a=-(b++)+c,a=(b--)-c,a=-b+c, b=b+1,復(fù)合算術(shù)賦值運算符,賦值運算符簡單賦值運算符 =復(fù)合(算術(shù))賦值運算符 += -= *
38、= /= %=賦值表達式變量 賦值運算符 表達式x += exp,x = x + (exp),例2-18,#include void main( ){ int x, y, z; z=(x=7)+(y=3); printf("%d,%d,%d\n", x, y, z); x=y=z=x+2; printf(&q
39、uot;%d,%d,%d\n", x, y, z); x*=y-3; printf("%d,%d,%d\n", x, y, z);},x=7, y=3, z=x+y,z=x+2, y=z, x=z,x=x*(y-3),2.6 數(shù)據(jù)的存儲和類型轉(zhuǎn)換,2.6.1 數(shù)據(jù)的存儲整型數(shù)據(jù)的存儲設(shè)整數(shù)占2個字節(jié)1 000 0001 1000 00010 000 0001 10
40、00 0001,原碼 反碼 補碼,正數(shù)的原碼、反碼和補碼相同1的補碼 0 000 0000 0000 0001……32767的補碼 0 111 1111 1111 1111(215-1)負數(shù) -1原碼 1 000 0000 0000 0001 反碼 1 111 1111 1111 1110 原碼取反補碼 1 111 1111 1111 1111 反碼+1
41、,原碼 反碼 補碼,32767補碼 0 111 1111 1111 1111-32767原碼 1 111 1111 1111 1111反碼 1 000 0000 0000 0000 原碼取反補碼 1 000 0000 0000 0001 反碼+1-32768 = -32767-1補碼 1 000 0000 0000 0000,-32768 -1 0
42、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
43、 1000 0000 0000 0001 -32768 1000 0000 0000 0000,32768 = 32767+11000 0000 0000 0000 = -32768-32769 = -32768-10111 1111 1111 1111 = 32767,實型和字符型數(shù)據(jù)的存儲,實型數(shù)據(jù)的存儲-1.2345e+02符號位 階碼 尾數(shù)字符型數(shù)據(jù)的存儲一個字節(jié)存儲ASC
44、II碼,2.6.2 整數(shù)類型的擴展,有符號 無符號 數(shù)據(jù)長度int unsigned [int] 16或32short [int] unsigned short [int] 16long [int] unsigned long [int] 32,無符號 u
45、nsigned設(shè)整數(shù)占2個字節(jié)0000 0000 0000 0000 01111 1111 1111 1111 65535(216-1),整數(shù)類型的最小取值范圍,int -32768~32767 (-215~215-1)short [int]long [int] -2147483648~ 2147483647
46、 (-231~231-1)unsigned [int] 0~65535 (0~216-1)unsigned short [int] unsigned long [int] 0~4294967295 (0~232-1),整型常量的表示,不能超出整型數(shù)據(jù)的取值范圍比長整型數(shù)還要大的數(shù)只能用實數(shù)來表示整型常量的類型整數(shù)后的字母后綴123L
47、 long123U unsigned123LU unsigned long數(shù)值,整型數(shù)據(jù)的輸入輸出,printf(格式控制, 輸出參數(shù)1, ... , 輸出參數(shù)n);scanf(格式控制, 輸入?yún)?shù)1, ... , 輸入?yún)?shù)n);格式控制說明 %… 十進制 八進制 十六進制int
48、 %d %o %xlong %ld %lo %lxunsigned %u %o %xunsigned long %lu %lo %lx,例2-
49、19,#include void main( ){ int ai; long cl; unsigned bu; unsigned long dul; ai = 32767; bu = 65535U; cl = -2147483648L; dul = 4294967295LU; printf("%d,%u,%ld,%lu\n",ai, bu, cl,
50、 dul); printf("%x,%x,%lx,%lx\n",ai, bu, cl, dul);},7fff, ffff, 80000000, ffffffff,2.6.3 數(shù)據(jù)類型轉(zhuǎn)換,不同類型數(shù)據(jù)的混合運算類型轉(zhuǎn)換自動轉(zhuǎn)換強制轉(zhuǎn)換運算,自動類型轉(zhuǎn)換(非賦值運算),水平方向:自動垂直方向:低 ? 高,自動類型轉(zhuǎn)換(非賦值運算),'A' + 12 – 10.05 65
51、 77 66.95,,,,自動類型轉(zhuǎn)換(賦值運算),變量 賦值運算符 表達式計算賦值運算符右側(cè)表達式的值將賦值運算符右側(cè)表達式的值賦給左側(cè)的變量將賦值運算符左側(cè)的變量的值作為表達式的值,將賦值運算符右側(cè)表達式的類型自動轉(zhuǎn)換成賦值號左側(cè)變量的類型,自動類型轉(zhuǎn)換(賦值運算),double x;x = 1;,x = ?,short a = 1000;char b = 'A';long
52、c = 80000;c = a + b;,c = ?,int ai;ai = 2.56;,ai = ?,int bi;bi = 0x12345678L,bi = ?,,例2-20,# include void main( ){ long a, b, c; a=1000000L; b=1000*1000LU; c=1000*100
53、0; printf("%ld,%ld,%ld\n", a, b, c);},運行結(jié)果為:1000000,1000000,16960,強制類型轉(zhuǎn)換,強制類型轉(zhuǎn)換運算符(類型名) 表達式優(yōu)先級同++,從右向左(double)3(int)3.8(double)(5/2)(double)5/2,3.032.02.5,運算符優(yōu)先級,( )- + ++ -- (類型名)
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二c++基本數(shù)據(jù)類型與表達式
- 基本數(shù)據(jù)類型表達式與運算符
- 第2章 c語言的基本數(shù)據(jù)類型與表達式
- c語言上機實數(shù)據(jù)類型運算符和表達式
- 習題二數(shù)據(jù)類型運算符和表達式習題
- 第2章 數(shù)據(jù)類型、運算符和表達式
- 基本數(shù)據(jù)類型和數(shù)組
- c++的初步知識數(shù)據(jù)類型與表達式
- 基本語法單位及基本數(shù)據(jù)類型
- 基因表達式程序設(shè)計的研究和應(yīng)用.pdf
- javascript數(shù)據(jù)類型及常量變量表達式和運算符教案
- 程序設(shè)計之合理選擇變量的數(shù)據(jù)類型
- 結(jié)構(gòu)和邊界:語言表達式的認知基礎(chǔ).pdf
- 課程設(shè)計報告-表達式類型的實現(xiàn)
- c語言概述與數(shù)據(jù)類型
- 基因表達式程序設(shè)計在符號回歸中的應(yīng)用研究.pdf
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-表達式類型的實現(xiàn)(難度系數(shù)1.2)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-表達式求值
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--表達式求值
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(表達式計算)
評論
0/150
提交評論