第3章 基本數據類型和表達式_第1頁
第3章 基本數據類型和表達式_第2頁
第3章 基本數據類型和表達式_第3頁
第3章 基本數據類型和表達式_第4頁
第3章 基本數據類型和表達式_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第3章 基本數據類型和表達式張書源本章將詳細介紹C語言程序中使用的基本語法基本語法單位單位、數據類型數據類型、運算符運算符和表達式表達式。附 數的表示方法十進制數:由09的數字組成,逢十進一。如:45、-6、0.019、-14.336二進制數:由0和1組成,逢二進一。如:1011、11、1101 0001 0100十進制0123456789二進制01101110010111011110001001二進制轉十進制:(110)2=1*22+1*21+0*20=(6)10(1011)2=1*23+0*22+1*21+1*20=(11)10八進制數:由07組成,逢八進一。如:65、725、-34十進制

2、0123456789八進制012345671011八進制轉十進制:(65)8=6*81+5*80=(53)10(725)8=7*82+2*81+5*80=(469)10十六進制數:由09、AF組成,逢十六進一。如:3A、4d6f、-D340十進制0123456789十六進制0123456789十進制10111213141516十六進制ABCDEF10十六進制轉十進制:(3A)16=3*161+10*160=(58)10(4d6f)16=4*163+13*162+6*161+15*160=(19823)10C語言中的數支持十進制、八進制和十六進制。書寫時:八進制數以0開頭,十六進制數以0 x開頭

3、。如:34(十進制)034(八進制)0 x34(十六進制)在計算機內部,所有數都是以二進制方式存在的。八進制和十六進制都與二進制有簡單對應關系:每位八進制數對應三位二進制數,每位十六進制數對應四位二進制數。如:(34)8=(011 100)2(34)16=(0011 0100)2(10 1111 0111)2=(1367)8=(2f7)16通常,八進制數和十六進制數都可看做是二進制數的簡化寫法。3.1 基本語法單位基本符號:C語言程序中只能使用以下符號:1、數字:092、字母:大小寫英文字母3、符號:+ - * / % & = _ ( ) , . ? ! # 等注:注釋文字和字符串中的

4、文字不受此限制。關鍵字(保留字):C語言中已經有了固定語法含義的名字稱為關鍵字。關鍵字不能再作為其它用途使用。語句名都是關鍵字。如if、else、while、for、return等。類型名都是關鍵字。如int、double、void等。注:由于C語言區(qū)分大小寫,所以for是關鍵字,而For、FOR則不是。標識符:標識符用于給變量、常量、函數、文件等命名。標識符的命名規(guī)則:1、由字母、數組、下劃線組成,且只能以字母或下劃線開頭。2、標識符中的字母區(qū)分大小寫。3、不能與關鍵字同名。特定字:特定字是標識符不是關鍵字,但它們在C語言中已經有了較固定的用法,應避免當做一般標識符使用。如:include、

5、define等用于編譯預處理。練習:以下哪些符號是合法的標識符?a3 3a x$ _b5 if IF main 3.2 數據類型C數據類型基本類型構造類型指針類型空類型void定義類型typedef字符類型char枚舉類型enum整 型實型單精度型float雙精度型double數組結構體struct共用體union短整型short長整型long整型int3.3 基本數據類型基本數據類型包括整型、實型和字符型。3.3.1 整型int:整型。short:短整型。long:長整型。unsigned int:無符號整型。unsigned short:無符號短整型。unsigned long:無符號長整

6、型。各種整型的區(qū)別在于數的取值范圍不同。整型常量:寫法含義實例普通寫法int型125、-125加后綴l或Llong型125L、-125L加后綴u或U無符號型125U 是 unsigned int型125UL 是 unsigned long型加前綴0八進制數0125的值相當于十進制數85加前綴0 x十六進制數 0 x125的值相當于十進制數293整型變量:類型名 變量1,變量2,;int x,y,max;unsigned int i,j;long k;unsigned long m,n;以上變量都是整型變量,但它們允許存放的數值范圍不同。3.3.2 實型float:單精度實型。double:雙精

7、度實型。float型提供7位有效數字,double型提供1516位有效數字。實型常量:1、普通寫法:默認為double型。如7.5、-1.228。2、加后綴f或F:單精度型。如7.5f類型是float。3、科學計數法:尾數 e或E 指數如:1.5e-3 表示 1.510-30.02E6 表示 0.02106注:指數必須為整數。實型不支持無符號型,也不支持八進制和十六進制寫法。實型變量:類型名 變量1,變量2,;double x,y;float z;x=-11.26;y=7e3;z=5E-4;3.3.3 字符型char:字符型。unsigned char:無符號字符型。在計算機中,所有文字和符號

8、也都是由數字表示的。我們把表示文字的數值稱為編碼。C語言中,字符型的長度為8位二進制數,最多只能表示256個字符。其中值為0127的數值表示的是ASCII碼表中的字符。字符常量:1、可打印字符:如 a、7、;。說明:字符常量只能是單個字符,值為ASCII碼值,不能是漢字。2、轉義字符:包括不可打印字符和一些有特定功能的字符。t 制表符,相當于Tab鍵形成的跳格。n 換行符,相當于回車鍵。 單引號。 雙引號。 反斜杠。 0 空字符,它的值為0。說明:一個轉義字符只相當于一個字符。字符型變量:類型名 變量1,變量2,;char c1,c2;unsigned char x;c1=#;c2=7;x=n

9、;3.3.4 字符串字符串是由文字組成的文本串。C語言沒有提供字符串類型,但支持在程序中使用字符串。字符串中可包含英文、中文、日文等任意文字,它們的值取決于系統使用的編碼。通常英文字母和符號使用長度為8位的ASCII碼,漢字使用長度為16位的GBK或GB2312碼。字符串中可包含轉義字符。字符串常量:用雙引號引起的文本串。Hello World!你好,北京!蘋果t桔子t香蕉nC:Windows說明:t、n、都是轉義字符,它們只相當于一個字符。字符串變量:C語言用0結尾的字符數組作為字符串變量。char s15=a,b,c,d,0; /s的值為abcdchar s2=abcd;說明:C語言在處理

10、字符串常量時會自動在末尾加上0字符。練習:1 和 1.0 有什么區(qū)別?1是int型,1.0是double型。1 和 1 有什么區(qū)別?1是int型,它的值是1。1是char型,它的值是49。1 和 1 有什么區(qū)別?1是char型,它是單個字符。1是字符串,它由1和0兩個字符組成。3.3.5 變量定義及初始化C語言規(guī)定:1、所有變量必須先定義再使用。2、變量在沒有設置值前,它的值是不確定的。3、變量的類型在程序執(zhí)行過程中不能發(fā)生改變。4、當賦給變量的值超出了它的取值范圍,其值會被截斷。變量定義:變量通常在函數開始處定義,定義時可以設置初值(初始化),也可以不設置初值。int a,b=10,c=1;

11、char c1=K;double x=7.5,y;變量名必須是標識符,同一個函數中變量不能重名。3.4 表達式和運算符C語言提供了豐富的運算符,可構建多種形式的表達式。表達式由操作數和運算符組成,每個表達式可產生一個確定的值。3.4.1 算數運算1、算數運算符:*乘整數或實數2*3 1.5*3.8/除整數或實數2/3 1.5/3.8%模整數6%2 6%4+加整數或實數75+88 13.6+5-減整數或實數13-6 7.1-2.3-取負 整數或實數-5 -8.3+增1整型變量x+ +x-減1整型變量x- -x說明:1、整數的運算結果還是整數,實數的運算結果是實數,整數和實數的運算結果是實數。運算

12、結果2*5102*2.55.0 (不是5)5/22 (不是2.5)5/2.02.5注意:模運算只能用于整數,不能用于實數。2、優(yōu)先級:*、/、%的優(yōu)先級高于+、-。運算結果1+2*511(1+2)*5155%2*223、在表達式中,只能用圓括號改變運算的優(yōu)先順序。如:算式:)()(2)3(510bayxbax寫成C表達式:(10*x+5*(3*a+b)/(2*(x+y)*(a-b)注:C語言中運算符不能省略,如10 x必須寫成10*x。4、自加運算和自減運算:+:增1,對變量的值加1。-:減1,對變量的值減1。如:x+ 等價于 x=x+1x- 等價于 x=x-1說明:(1) 自加和自減只能作用

13、于單個整型變量。如:(x+y)+ 是沒有意義的。(2) 自加和自減有前綴用法和后綴用法。int x=2;x+; /相當于x = x+1int x=2;+x; /相當于x = x+1單獨使用時,前綴用法和后綴用法效果是相同的。(3) 前綴方式是“先增值后引用”,后綴方式是“先引用后增值”。int x=2, y;y = +x;x先增1,再賦值給y。所以x為3,y為3。int x=2, y;y = x+;先把x賦值給y,再對x增1。所以x為3,y為2。建議:盡量不要使用容易誤解的用法。int x=2, y;y = +x;int x=2, y;+x;y = x;int x=2, y;y = x+;in

14、t x=2, y;y = x;x+;推薦推薦int i=2, n;n = +i*2;int i=2, n;n = i+*2;+i是先增值,后引用。所以,運算后:i值為3,n值為6。i+是先引用,后增值。所以,運算后:i值為3,n值為4。(4) “+”和“-”運算的優(yōu)先級高于乘法和除法。2、常用數學函數:C語言的數學函數在頭文件math.h中聲明。絕對值函數:int abs(int i) 求整數的絕對值double fabs(double x) 求實數的絕對值abs(-3)3fabs(-3)3.0fabs(-0.5*3)1.5平方根函數:double sqrt(double x) 求平方根,x不

15、能為負sqrt(2)sqrt(a+b)2ba指數函數和對數函數:double pow(double x, double y) 求x的y次方double exp(double x) 求e的x次方double log(double x) 求x的自然對數double log10(double x) 求x的以10為底的對數pow(3, 4)exp(3.5)log(10)log10(10)4310loge10ln10log1010lg5 . 3e三角函數:double sin(double x) 求x正弦值double cos(double x) 求x的余弦值double tan(double x) 求

16、x的正切值以上函數中的x均為弧度。sin(30*3.14/180)cos(60*3.14/180)30sin()60cos(練習把下面的算式寫成C表達式。(abs(a)+1)*(abs(b)+1) 11baaacbb242(-b+sqrt(b*b-4*a*c)/(2*a)例題寫一個C程序,輸入圓的半徑,計算并輸出圓的周長和面積。算法:輸入半徑r計算圓的周長c=2r計算圓的面積s=r2輸出c和s。#include #define PI 3.1415926int main() double r,c,s; scanf(%f,&r); c=2*PI*r; s=PI*r*r; printf(周長

17、為%fn,c); printf(面積為%fn,s); return 0;3.4.2 賦值運算1、賦值運算符:在C語言中,賦值是一種運算,用于改變變量的值。“=”稱為賦值運算符,它組成的表達式稱為賦值表達式。賦值表達式格式:變量名 = 表達式這個運算的值是賦值后變量的值。實例1:int n; /*聲明了一個整型變量n*/n = 1; /*n賦值為1*/n = 1; 是一個表達式語句。實例2:int n = 1;n = 2.5;n是整型變量,賦值時會把小數截去,n的值為2。實例3:double x;x = 2.5;x的值是2.5。實例4:int a = 1, b = 2;a = a+b;a的值是3

18、。實例5:int a, b, c;a = b = c = 10;賦值是一種運算,具有“自右向左”的結合性。先計算表達式 c = 10,c賦值為10,表達式值為10。再計算表達式 b = 表達式值,b賦值為10,表達式值為10。再計算表達式 a = 表達式值,a賦值為10,表達式值為10。執(zhí)行結果為a、b、c的值都是10。練習:int a, b, c=1;a = 5;b = 2+(c=a);結果:a 的值是5;b 的值是7;c 的值是5。2、自反賦值運算符:自反賦值是某些賦值的簡化形式。*=乘賦值 x *= yx = x*y/=除賦值 x /= yx = x/y%=模賦值 x %= yx = x

19、%y+=加賦值 x += yx = x+y-=減賦值 x -= yx = x-y說明:賦值運算符(含自反賦值運算符)的優(yōu)先級低于算術運算符,所以應先計算y+2,再進行自反賦值運算。int a=1, b=2;a += b; /* 相當于a=a+b,執(zhí)行后a為3 */int x=2, y=3;x *= y+2; /* 相當于x=x*(y+2),執(zhí)行后x為10 */說明:賦值和自反賦值運算符都是右結合的。計算過程為:a-=2*2; /a=a-2*2,值為-3,此時a值也變?yōu)?3a+=-3; /a=a+(-3),值為-6int a=1;a += a -= 2*2;3.4.3 關系運算1、關系運算符:大

20、于()大于等于()=小于()小于等于()3 的值為15=3 的值為02=b+c2、a%b=c3、acb4、a=a1000說明:由于實數在運算時存在有效數字的問題,應盡量避免對實數表達式做“相等”或“不等”的判斷。如:1.0/3*3=1.0在數學上兩邊是相等的,但在計算機中計算后兩邊的值不相等。3.4.4 邏輯運算1、邏輯運算符:邏輯與&邏輯或|邏輯非!當一個判斷存在多個條件時,需要用邏輯運算對條件進行組合。邏輯與:當條件均為真時,結果為真,有任一個條件為假,結果就是假。如:53 & 7=3 & 73 | 78 的值為158 的值為0F | F0(F)F | T1(T)T

21、 | F1(T)T | T1(T)F為假,T為真。邏輯非:真的非是假,假的非是真。如:!(53) 的值為0!(7=8) 的值為1!F1(T)!T0(F)F為假,T為真。命題1:x是1到100間的整數。x=1 & x=1 & x=100)x100或者命題3:x是小寫英文字母。x=a & x=a & x=A & x、=、=關系雙目=、!=關系雙目&邏輯雙目|邏輯雙目=、+=、-=、*=、/=、%=賦值2、在進行&運算時,當左端的運算結果為“假”時,結果就是0,不再計算另一端。在進行|運算時,當左端的運算結果為“真”時,結果就是1,不再計算另一

22、端。如:int a=2, x;計算表達式:a0 & (x=3)表達式值為1,x=3執(zhí)行,x值為3。練習:命題1:a小于b或a小于c。ab | ac & bc命題3:a和b其中之一小于c。ac | b0)命題5:a是奇數。a%2=1命題6:a不能被b整除。a%b!=03.4.5 逗號運算符逗號表達式:表達式1,表達式2,表達式3這種用逗號連接起來的表達式稱為逗號表達式。從語法上,它相當于一個表達式,它的值是最后一個表達式的值。如:1+2, 5*3 的值為15說明:逗號運算符的優(yōu)先級是最低的。如:x=1+2, 5*3 的效果是x值為3,逗號表達式的值為15x=(1+2,5*3) 的效果是x值為153.4.6 條件運算符條件表達式:表達式1?表達式2:表達式3?:是條件運算符,它是C語言中

溫馨提示

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

評論

0/150

提交評論