




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Chap 5 數(shù)據(jù)類型和表達式數(shù)據(jù)類型和表達式 5.1 基本數(shù)據(jù)類型 5.2 常量和變量 5.3 數(shù)據(jù)的輸入和輸出5.4 類型轉(zhuǎn)換5.5 表達式本章要點本章要點l基本數(shù)據(jù)類型l定義符號常量l表達式的求解C語言的數(shù)據(jù)類型語言的數(shù)據(jù)類型整型整型: int, long, 基本類型基本類型字符型字符型: char浮點型浮點型: float, double構(gòu)造類型構(gòu)造類型數(shù)組數(shù)組 結(jié)構(gòu)結(jié)構(gòu) 聯(lián)合聯(lián)合枚舉枚舉空類型空類型 void指針指針 5.1 基本數(shù)據(jù)類型基本數(shù)據(jù)類型l基本數(shù)據(jù)類型基本數(shù)據(jù)類型整型整型 int,long, short, unsigned, 字符型字符型 char浮點型浮點型 float
2、 ,double不同的整型不同的整型有符號有符號無符號無符號短整型短整型shortunsigned short普通整型普通整型intunsigned 長整型長整型long unsigned long基本類型的數(shù)據(jù)長度基本類型的數(shù)據(jù)長度l整型整型短整型短整型short:2B,即,即 16bits普通整型普通整型int、整型、整型long:4B,即,即 32bitsl實型實型float: 4Bdouble: 8B采用采用科學(xué)計數(shù)法科學(xué)計數(shù)法:123.45 1.2345e+02l字符型字符型char: 1B存放字符的存放字符的ASCII碼(碼(0127)048,A65, a 97/* 求某類型的長度
3、求某類型的長度 sizeof*/#includevoid main() printf(%dn, sizeof(int) );整型的取值范圍整型的取值范圍short 16位 -32768 32767 -215 215-1int 32位 -2147483648 2147483647 -231 231-1long 32位 -2147483648 2147483647 -231 231-1unsigned short 16位 0 65535 0 216-1unsigned 32位 0 4294967295 0 232-1unsigned long 32位 0 4294967295 0 232-111
4、2, 21nn有符號有符號整型:整型:無符號無符號整型:整型:0,21n字符型字符型charcharl字符具有數(shù)值特征字符具有數(shù)值特征A 65 0100 0001 l在在ASCII碼碼范圍范圍 0, 127以內(nèi),整型變量和以內(nèi),整型變量和字符變量的定義和賦值可以互換字符變量的定義和賦值可以互換 char c; c = A; 等價于等價于 c = 65; int i; i = 65; 等價于等價于 i = A;以單引號 為標(biāo)志浮點浮點型型l單精度浮點型 floatl雙精度浮點型 double 數(shù)據(jù)長度 數(shù)據(jù)精度 取值范圍 (有效數(shù)字)float 4B 78位 (10-38 1038)double
5、 8B 1516位 (10308 10308 )數(shù)據(jù)精度和取值范圍數(shù)據(jù)精度和取值范圍l數(shù)據(jù)精度 與 取值范圍是兩個不同的概念:float x = 1234567.89;雖在取值范圍內(nèi),但無法精確表達。float y = 1.2e55;精度要求不高,但超出取值范圍(10-381038)。實際上實際上,x = 1234567.805.2.1 常量定義和使用 符號常量整型常量、實型常量、字符型常量5.2.2 變量 變量的定義和使用 5.2 常量與變量常量與變量5.2.1 常量常量常量的類型通常由書寫格式?jīng)Q定123 (整型)4.56 (實型) A (字符型)符號常量符號常量:用一個標(biāo)識符標(biāo)識符代表一個
6、常量:PI :EPSl如何 定義符號常量?#define 符號符號 常量常量如: #define PI 3.1415926以單引號 為標(biāo)志用大寫字母大寫字母例例5-1 球的表面積和體積球的表面積和體積#include #define PI 3.14void main( ) double r, s, v; scanf(%lf, &r); s=4.0*PI*r*r ; v=4.0/3.0*PI*r*r*r ; printf(s=%f, v=%fn, s, v); 末尾不加分號!末尾不加分號!3.14159想要提高精度,想要提高精度,怎么辦?怎么辦?整型常量整型常量(整數(shù)整數(shù))l整數(shù)的表示:
7、三種數(shù)制整數(shù)的表示:三種數(shù)制1)十進制十進制:正、負號,正、負號,09,無前綴,無前綴例:例: 10,1232)八進制八進制:正、負號,正、負號,07,前綴為,前綴為0例:例: 010,01233)十六進制十六進制:正、負號,正、負號,09,a-f, A-F, 前綴為前綴為0 x,0X例:例:0 x10,0X123整數(shù)的表示整數(shù)的表示十進制八進制十六進制123 0173 0 x7b10 012 0XA l不能超出整型數(shù)據(jù)的取值范圍l超出整型取值范圍的整數(shù),用來浮點型表示浮點型常量浮點型常量(實數(shù)實數(shù))l實數(shù)的表示實數(shù)的表示1)浮點表示法浮點表示法0.123 123.4 12. .122)科學(xué)計
8、數(shù)法科學(xué)計數(shù)法-123e4 0.2e-1l實數(shù)常量實數(shù)常量 統(tǒng)一當(dāng)作統(tǒng)一當(dāng)作 double型型字符型常量字符型常量l字符常量:界定符為一對單引號a A 9 + $ ASCII字符集:列出了所有可用的字符(128個),各字符對應(yīng)惟一的ASCII 碼0-9: 4857A-Z:6590a-z:97122在輸入和輸出時無單引號!字符的數(shù)值特征字符的數(shù)值特征字符字符 實質(zhì)上是一個實質(zhì)上是一個0127 之間的之間的整數(shù)整數(shù)對字符進行運算對字符進行運算 對字符的對字符的ASCII 碼進行運算碼進行運算例如:例如:A 的的 ASCII 碼是碼是 65則:則:A+1=66,對應(yīng)字符對應(yīng)字符 B如何區(qū)分?jǐn)?shù)字字符和
9、數(shù)字? 1 1C-A+a=?轉(zhuǎn)轉(zhuǎn)義義字字符符l反斜杠后跟一個字符 或 ASCII碼值n 40 x41 所有字符都可以用轉(zhuǎn)義字符表示無法輸入、無法顯無法輸入、無法顯示的字符示的字符5.2.2 變量變量在程序運行過程中,值可以改變的量。l變量必須 先定義,后使用l定義變量時要指定 數(shù)據(jù)類型、變量名l變量應(yīng)該 先賦值,后引用l三要素:變量類型變量名 (一般使用一般使用小寫小寫字母字母)變量值1) 賦初值賦初值:在定義變量時對它賦值:在定義變量時對它賦值int a=5, b=3;2)賦值賦值表達式表達式:int a, b;a=5;b=3;3)輸入輸入:int a, b;printf(Input a a
10、nd b: );scanf(%d%d, &a, &b);變量的值變量的值小結(jié)與作業(yè)小結(jié)與作業(yè)l小結(jié)C的4種基本數(shù)據(jù)類型(包括多種整型)如何定義和使用符號常量?字符與字符串常量的區(qū)別?l作業(yè):P117: 24判斷題:1.變量名可使用字母、數(shù)字和部分特殊字符如*、?、:等2.C語言中字符串常量可與整數(shù)作加減運算3.C語言中整型數(shù)分為長整型、短整型和普通整型4.變量賦初值與賦值是一回事上講回顧上講回顧l基本數(shù)據(jù)類型(int, float, double, char)l整型的分類:短整型short、普通整型int、 長整型long有符號整型和無符號整型 (unsigned)l字符型也可
11、看作一種特殊的整數(shù)類型1和1的區(qū)別?l符號常量5.3.1 整型數(shù)據(jù)的輸入和輸出5.3.2 實型數(shù)據(jù)的輸入和輸出5.3.3 字符型數(shù)據(jù)的輸入和輸出 5.3 數(shù)數(shù)據(jù)的輸入和輸出據(jù)的輸入和輸出 5.3.1 整型數(shù)據(jù)的輸入輸出格式整型數(shù)據(jù)的輸入輸出格式十進制十進制八進制八進制十六進制十六進制int%d%o%xlong%ld%lo%lxunsinged%u%o%xunsinged long%lu%lo%lx例例5-3(1) 輸出整型數(shù)據(jù)輸出整型數(shù)據(jù) # include void main( ) printf(%d, %o, %x n, 10, 10, 10); printf(%d, %d, %d n,
12、10, 010, 0 x10); printf(%d, %x n, 012, 012); 二進制補碼二進制補碼00101010, 12, a10, 8, 1610, a例例5-3(2) 輸入整型數(shù)據(jù)輸入整型數(shù)據(jù)# include void main( ) int a, b; printf(input a, b:); scanf(%o%d, &a, &b); printf(“%d, %dn, a, b); printf(%o, %dn, a, b); input a, b: 17 1715, 1717, 175.3.2 實型數(shù)據(jù)的輸入和輸出實型數(shù)據(jù)的輸入和輸出l輸出輸出 prin
13、tf( )float 和和double使用使用相同的相同的格式控制說明格式控制說明%f : 以以小數(shù)形式小數(shù)形式輸出浮點數(shù),保留輸出浮點數(shù),保留6位小數(shù)位小數(shù)%e: 以以指數(shù)形式指數(shù)形式輸出輸出l輸入輸入 scanf( )float:%f 或或%e double: %lf或或%le 實型數(shù)據(jù)輸出示例實型數(shù)據(jù)輸出示例# include void main( ) double x = 3.1415926; printf(%f, %en, x, x); printf(%5.3f, %5.2f, %.2fn, x, x, x); 共占共占5位位,保留保留3位小數(shù),小數(shù)點占位小數(shù),小數(shù)點占1位位3.14
14、1593, 3.14159e+003.142, 3.14, 3.14例5-4 實型數(shù)據(jù)輸入輸出示例實型數(shù)據(jù)輸入輸出示例假定假定float的精度為的精度為7位,位,double的精度為的精度為16位位 # include void main( ) float x; double y; printf(input x, y:n); scanf(%f%lf, &x, &y); printf(“x = %fn y = %f n, x, y);input x, y: 1234567890123.123456 1234567890123.123456x = 1234567954432.000
15、000y = 1234567890123.123540注意注意有效位數(shù)有效位數(shù)5.3.3 字符型數(shù)據(jù)輸入輸出字符型數(shù)據(jù)輸入輸出l通用函數(shù):通用函數(shù):scanf( )和和printf( ) %c - 輸入輸入/輸出輸出字符字符char ch;scanf(%c, &ch);printf(%c, ch);l專用函數(shù):專用函數(shù): getchar( )和和putchar( )char ch;ch = getchar( ); /輸入一個字符輸入一個字符putchar(ch); /輸出一個字符輸出一個字符【例5-5】 字符的輸入輸出# include void main( ) char ch1, c
16、h2; ch1=getchar(); ch2=getchar(); putchar(ch1); putchar(#); putchar(ch2);abscanf(%c%c, &ch1, &ch2);printf(%c#%c, ch1, ch2);a#b例5-6 輸出字符型數(shù)據(jù)# include void main( ) char ch = b; printf(%c,%dn, ch, ch); printf(%c,%dn, 98, 98); printf(%c,%dn, ch-1, ch-1); printf(%c,%dn, ch - a + A, ch - a + A ); /
17、* b的ASCII碼為98 */b, 98b, 98a, 97小寫字母小寫字母大寫字母大寫字母: ch-a+AB, 98大寫字母大寫字母小寫字母小寫字母: ch-A+a字符的字符的+、- 運算運算l大、小寫大、小寫字母轉(zhuǎn)換字母轉(zhuǎn)換 b - a = B - A B = b - a + A z - a = Z - A z = Z - A + a m M ?l數(shù)字字符、數(shù)字?jǐn)?shù)字字符、數(shù)字 的轉(zhuǎn)換的轉(zhuǎn)換9 - 0 = 9 - 0 9 = 9 + 0 , 9 = 9 - 08 8lM= m - a + Alm=M - A + a l8 - 0 = 8l8 + 0 =8大寫字母大寫字母= 小寫字母小寫字母
18、-a+A小寫字母小寫字母= 大寫字母大寫字母-A+a數(shù)字字符數(shù)字字符= 數(shù)字?jǐn)?shù)字 + 0數(shù)字?jǐn)?shù)字 = 數(shù)字字符數(shù)字字符 - 0如果運算中涉及不同類型的數(shù)據(jù),要先轉(zhuǎn)換為同一類型再運算。5.4.1 自動類型轉(zhuǎn)換自動類型轉(zhuǎn)換非賦值運算的類型轉(zhuǎn)換賦值運算的類型轉(zhuǎn)換5.4.2 強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換5.4 類型轉(zhuǎn)換類型轉(zhuǎn)換自動類型轉(zhuǎn)換(非賦值運算)自動類型轉(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)
19、換(賦值運算)變量變量 表達式表達式l計算計算 右側(cè)右側(cè)表達式表達式的值的值l將將 右側(cè)右側(cè)表達式表達式的值賦給的值賦給 左側(cè)左側(cè)變量變量將右側(cè)表達式的類型將右側(cè)表達式的類型自動轉(zhuǎn)換成自動轉(zhuǎn)換成左側(cè)變量的類型左側(cè)變量的類型自動類型轉(zhuǎn)換自動類型轉(zhuǎn)換(賦值運算賦值運算)double 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 = ?5.4.2 強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換運算符運算符(類型名類型名) 表達式表達
20、式(double)3(int)3.8(double)(5/2)(double)5/23.032.02.5括號不可少!括號不可少!例例5-7 強制類型轉(zhuǎn)換示例強制類型轉(zhuǎn)換示例# include void main( ) int i; double x; x = 3.8; i = (int) x; printf(x = %f, i = %d n, x, i); printf(double)(int)x = %fn, (double)(int)x); printf( x mod 3 = %dn, (int)x % 3); x = 3.800000, i = 3(double)(int)x = 3.0
21、00000 x mod 3=0內(nèi)容小結(jié)內(nèi)容小結(jié)l通用的輸入輸出函數(shù)通用的輸入輸出函數(shù)scanf() 和和 printf()格式控制說明符:格式控制說明符:l%d, %f, %lfl%u, %o, %x, %cl字符專用的輸入輸出函數(shù)字符專用的輸入輸出函數(shù)getchar()putchar()l類型轉(zhuǎn)換類型轉(zhuǎn)換l表達式的組成成分表達式的組成成分運算對象運算對象:常量、變量、函數(shù):常量、變量、函數(shù) 運算符運算符:具有運算功能的符號:具有運算功能的符號算術(shù)表達式:算術(shù)表達式: i+賦值表達式賦值表達式:a= sin(1.0)關(guān)系表達式關(guān)系表達式:x=0邏輯表達式邏輯表達式:x=0 & xb?
22、a: b逗號表達式逗號表達式:a=1, b=2, c=3 5.5 運算符與表達式運算符與表達式 l表達式有一個確定的表達式有一個確定的類型類型和和值值類型類型:表達式中最高的數(shù)據(jù)類型:表達式中最高的數(shù)據(jù)類型求值求值:先考慮:先考慮優(yōu)先級別優(yōu)先級別,再考慮,再考慮結(jié)合方向結(jié)合方向l優(yōu)先級別:優(yōu)先級別: 15個個l方向:自左向右、自右向左方向:自左向右、自右向左l錯誤錯誤的表達式:的表達式:5.3 %23+5.5.1 算術(shù)表達式算術(shù)表達式4 4個單目:個單目: + - + -5 5個雙目:個雙目: + - * / % 注意事項:注意事項:1)整除整除/,針對整數(shù),針對整數(shù)8/5 = 1,-8/5
23、= -12)模模(求余求余) % : 針對整型數(shù)據(jù)針對整型數(shù)據(jù)1%3 = 1,2%3 = 2, 3%3=0, 3)+ 和和 l單目:單目: +10 和和 10l雙目:雙目: x+10 和和 y 10自增自增+ 自減自減-int i;i+ii- -i共同點:使變量的值增共同點:使變量的值增1或減或減1+i i+ i=i+1-i i- i=i-1區(qū)別:區(qū)別:先先增增/減減后后使用使用 or 先先使用使用后后增增/減減i+:表達式的值等于表達式的值等于i增增1之前之前的值的值+i:表達式的值等于表達式的值等于i增增1之后之后的值的值表達式的值?表達式的值?變量的值?變量的值?自增運算和自減運算自增運
24、算和自減運算int n, m;n=2;m=n+;n=2;m=+n;n=3n=3m=2m=3自增、自減運算自增、自減運算+和和- 只能用于只能用于變量變量不能作用于常量或表達式不能作用于常量或表達式錯誤錯誤的例子的例子!+-a(a+b)+10+-(a-b)sqrt(x*x)-x+ -y+a+ba+ +ba+(+b)系統(tǒng)分隔原則:系統(tǒng)分隔原則:“ “盡量取大盡量取大” ”a+ +bl自增、自減運算的副作用自增、自減運算的副作用自增、自減運算自增、自減運算在不同的VC編譯系統(tǒng)中相同的表達式因計算順序不同導(dǎo)致計算結(jié)果不同int i=3,j;j= (i+) +(i+) +(i+);i=?j= ?或或 j
25、= 3+4+5j= 3+3+36?int i=3,j;i+; i+; i+;j= i+i+i;優(yōu)先級優(yōu)先級 、結(jié)合方向、結(jié)合方向單目單目 + - + -雙目雙目 * / %雙目雙目 + -高高低從右向左從右向左-5 + 3%2 (-5) + (3%2) 結(jié)果為結(jié)果為 -43 * 5 % 3 (3*5) % 3結(jié)果為結(jié)果為 0-i+ -(i+)優(yōu)先級:結(jié)合方向:Why?從左向右從左向右5.5.2 賦值賦值表達式表達式l賦值運算符賦值運算符 = =x = 3*4優(yōu)先級:較低,優(yōu)先級:較低,結(jié)合性:結(jié)合性:從右向左從右向左x = y = 3 x = (y = 3)賦值賦值表達式表達式變量 表達式計算
26、表達式的值將表達式的值賦給變量 int n = 2; 賦初值 int n; double x, y;n = 3.14*2;賦值x = 10/4;賦值x = (y = 3);賦值賦值表達式的值等于變量的值復(fù)合賦值運算符復(fù)合賦值運算符l賦值運算符賦值運算符簡單賦值簡單賦值運算符運算符 =復(fù)合賦值復(fù)合賦值運算符運算符l復(fù)合算術(shù)賦值運算符復(fù)合算術(shù)賦值運算符 += -= *= /= %=l復(fù)合位賦值運算符復(fù)合位賦值運算符i += 2 等價于等價于 x *= y - 3i = i + 2x = x * (y-3) 5.5.3 關(guān)系表達式關(guān)系表達式l關(guān)系表達式的值關(guān)系表達式的值 :1(真),(真), 0(假
27、)(假)x y x y x = y x != yl優(yōu)先級優(yōu)先級 算術(shù)運算符算術(shù)運算符 = = != 賦值運算符賦值運算符l結(jié)合方向:結(jié)合方向:從左向右從左向右a b = cd = a bch a + 1 d = a + b c3 = x b)= cd = (a b)ch (a + 1)d = (a + b) c)(3 = x) b = cld = a blch a + 1ld = a + b clb - 1 = a != cl3 = x = 3 & x = a & ch = A & ch = 3 & x = 3) & (x = a & ch = A & ch 0) ? x+2 : x*x;if ( x0 ) y=x+2;else y=x*x; x+2 x0y = x2 x=0結(jié)合方向:自右向左5.5.6 逗號逗號表達式表達式表達式表達式1, 表達式表達式2, ,表達式表達式n依次計算依次計算 表達式、表達式、表達式、表達式、表達式、表達式n,并將并將表達式表達式n 作為作為逗號表達式逗號表達式的值的值.int a, b,
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國智能連接嬰兒監(jiān)視器行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030中國有機早餐麥片行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析研究報告
- 2025-2030中國有償停車管理行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030中國智能水冷卻器行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030中國智能坐便器行業(yè)市場發(fā)展分析及發(fā)展趨勢與投資前景預(yù)測報告
- 2025-2030中國暈車藥行業(yè)發(fā)展分析及發(fā)展前景與趨勢預(yù)測研究報告
- 2025-2030中國日志視頻放大器行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030中國無繩吸塵器行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析研究報告
- 2025-2030中國文化博物館行業(yè)現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 2025-2030中國搬運椅行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 直腸癌的護理查房
- 液氨管道維修改造施工方案范本
- 《建筑與市政工程施工質(zhì)量控制通用規(guī)范》宣貫課件
- 煙道加強肋計算書(樣本)
- 生產(chǎn)車間5S稽核評分表
- 廣州知識產(chǎn)權(quán)法院民事判決書
- 80后-兒時回憶課件
- 《西游記》知識問答參考課件
- 魯奇爐結(jié)構(gòu)原理
- 煤礦安全生產(chǎn)技術(shù)概述
- 多器官功能衰竭病人的護理
評論
0/150
提交評論