第3章數據類型、運算符、表達式--C語言程序設計(譚浩強第三版)_第1頁
第3章數據類型、運算符、表達式--C語言程序設計(譚浩強第三版)_第2頁
第3章數據類型、運算符、表達式--C語言程序設計(譚浩強第三版)_第3頁
第3章數據類型、運算符、表達式--C語言程序設計(譚浩強第三版)_第4頁
第3章數據類型、運算符、表達式--C語言程序設計(譚浩強第三版)_第5頁
已閱讀5頁,還剩54頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、2022-3-151第二章 數據類型、運算符、表達式2022-3-152數據類型、運算符、表達式C語言的詞法記號 C語言的數據類型常量與變量各類數值間的混合運算 運算符和表達式2022-3-153本章介紹C語言的基礎,主要包括: 數據類型 運算符和表達式均是程序設計的基本知識為什么討論這些知識?2022-3-154【例】計算圓的面積,半徑為 5 cm。 程序如下:main( ) float=* *printf (%fn ,) ; 2022-3-155分析:計算機操作處理時,要完成以下工作:在內存中給半徑 r 和運算結果 area 開辟存儲空間,存放它們的值。應該留多大的地方來存放它們的值?數據

2、 5 和 3.14 與 r 、area 不同,它們是在編寫程序時就給出確定的值,在運算過程中不會改變。這樣的數計算機怎么處理?對整數 5 和小數3.14 ,計算機存放時是否有區別?2022-3-1563.1 C3.1 C語言的詞法記號語言的詞法記號引例: /*求得并輸出兩數相加之和*/#include int Add(int a, int b)return (a + b);void main( ) /*主函數*/ int x, y, sum = 0;scanf(%d%d, &x, &y); /*輸入兩個整型數x和y*/sum = Add(x, y); /*調用函數Add求x和y

3、相加之和*/printf(sum = %dn, sum); /*輸出x和y相加之和*/2022-3-157C C語言的詞法單位可分成語言的詞法單位可分成6 6類:類:1、關鍵字(Keyword)又稱為保留字(32個)見P365附錄B c語言預先規定的具有固定含義的一些單詞如:數據類型修飾符int, 控制語句return等 2、標識符(Identifier)系統預定義標識符,main,printf、include等 用戶自定義標識符,Add, x, y 等3、運算符(Operator)34種,詳見P365附錄B + 、 =4、分隔符(Separator) 空格、回車/換行、逗號等 5、其它符號

4、大花括號“”和“”通常用于標識函數體或者一個語句塊 “/*”和“*/”是程序注釋所需的定界符 “#”、 等6、數據(Data)變量(Variable)常量(Constant) 2022-3-158關鍵字: auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

5、2022-3-1592、標識符 定義:用來標識變量、常量、函數等的字符序列 組成:只能由字母、數字、下劃線組成,且第一個字母必須是字母或下劃線大小寫敏感不能使用關鍵字 長度:最長32個字符 命名原則:見名知意不宜混淆 如l與I, o與0例:判斷下列標識符號合法性sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123M.D.John3days#33char$123ab2022-3-1510C C數數據據類類型型基本類型基本類型構造類型構造類型指針類型指針類型空類型空類型voidvoid定義類

6、型定義類型typedeftypedef數值類型字符類型字符類型charchar枚舉類型枚舉類型enumenum整整 型型實實 型型單精度型單精度型floatfloat雙精度型雙精度型doubledouble短整型短整型shortshort長整型長整型longlong整型整型intint數組數組結構體結構體structstruct共用體共用體unionunion數據類型決定:數據類型決定:1. 1. 數據占內存字節數數據占內存字節數2. 2. 數據取值范圍數據取值范圍3. 3. 可進行的操作可進行的操作3.2 C的數據類型的數據類型數據是操作的對象,數據類型是數據的外在表現形式,常見類型如下:2

7、022-3-15113.2.1 3.2.1 基本數據類型基本數據類型整型整型1 1、整型數據的分類:、整型數據的分類: 大的方面分有符號數(signed)和無符號數(unsigned)兩種類型。 又根據整型數據在內存中所占的字節數(或者根據整型數據能表示的數的范圍大小)分為: 基本型 int 短整型 short int 長整型 long int 這樣一共組合成6種.2022-3-1512不同的編譯系統為整型數據分配的字節數是不相同的,Turbo C 2.0為一個int型數據在內存中分配2個字節的存儲單元。VC+ 6.0則分配4個字節。2 2、整型數在內存中的存放和表示范圍:、整型數在內存中的存

8、放和表示范圍:整數類型整數類型 所占位所占位數數 定義類型字定義類型字 表示數的范圍表示數的范圍 有有符符號號 基本型基本型 16int -32768 +32767 短整型短整型 16short int -32768 +32767長整型長整型 32long int -231 (231-1 )無無符符號號基本型基本型 16unsigned int 0 65535 短整型短整型 16unsigned short 0 65535 長整型長整型 32unsigned long 0 (232-1)2022-3-15133 3、整型數據的溢出、整型數據的溢出 “溢出”是指運算結果過大,而超出了表示范圍的一

9、種錯誤狀態。C編譯程序不檢測這種錯誤。例 整型數據的溢出#include void main() int a,b; a=32767; b=a+1; printf(“%d,%dn”,a,b); 數值是以補碼表示的。 int型范圍-3276832767, 加1發生“溢出”。 改變辦法:預先定義b為long類型2022-3-1514 1 1、實型(浮點型)程序中有兩種表示法、實型(浮點型)程序中有兩種表示法3.2.23.2.2基本數據類型基本數據類型 實型數據實型數據規范化的指數形式:規范化的指數形式: 在字母e(或E)之前的小數部分中,小數點左邊應有一位(且只能有一位)非零的數字. 例如例如: :

10、 123.456 1.23456e3 1.23456e3稱為“規范化的指數形式”。(1)十進制小數形式:.123 23.1(2) 指數形式:123e3 1.234e34 (e e前必須有數字,前必須有數字,e e后指數必須為整數后指數必須為整數)2022-3-15152 2實型數據的類型實型數據的類型 單精度實型數據單精度實型數據 floatfloat, 分配分配4 Byte4 Byte雙精度實型數據雙精度實型數據 doubledouble,分配,分配 8 Byte8 Byte3 3實型數據在內存中的存放形式實型數據在內存中的存放形式 系統把一個實型數系統把一個實型數, ,分成小數部分和指數部

11、分,分別存放采分成小數部分和指數部分,分別存放采用規范化的指數方式示用規范化的指數方式示, ,如:如:類型類型符Byte絕對值的范圍有效數字單精度型float4-3.410-37 3.4103867 位雙精度型double8-1.7*10-307 1.7103081516位數符數符小數小數指數符號指數符號指數指數+0.123456-2小數部分小數部分指數部分指數部分2022-3-1516 實型數據只能精確表示有限位。實型數據只能精確表示有限位。 當實數真值超出表示法精度時,系統將進行四舍五當實數真值超出表示法精度時,系統將進行四舍五入保留相應的有效數字。入保留相應的有效數字。4 4、實型數據的

12、誤差、實型數據的誤差例 浮點型數據的舍入誤差#include void main()float a,b; a = 123456.789e5; b = a + 20 ; printf(“%fn”,b); 一個浮點型變量只能保證的有效數字是7位有效數字,后面的數字是無意義的,并不準確地表示該數。應當避免將一個很大的數和一個很小的數直接相加或相減,否則就會“丟失”小的數a=12345678848.000000b=12345678848.0000002022-3-15173.2.33.2.3基本數據類型基本數據類型 字符型數據字符型數據 char 如: 一般用8位來存放一個字符如:普通字符 A 存放的

13、是該字符的ASCII碼值(即整數 ) 可把字符型看作一種特殊的整型 10000110a97例如:字符變量例如:字符變量c1存放字符存放字符a,是存放,是存放972022-3-15183.3常量和變量主要內容:主要內容: 常量常量 變量變量2022-3-15193.3.1 常量常量 在運行程序的過程中值保持不變的量在運行程序的過程中值保持不變的量1整型常量(1)表示方法 十進制:09 :如 八進制:07,以 0開頭。如 十六進制:09,AF/af,以 0 x或 0X 開頭(2)整型常量的類型: 根據值大小默認類型。 整型常量后面加l或L,則認為是long int型 例如:123L、0L、432l

14、、0 x100l2022-3-15202. 2. 實型常量實型常量 (1)實型常量的表示方法1、十進制小數形式:.123 23.12、 指數形式:123e3 1.234e34(e e前必須有數字,前必須有數字,e e后指數后指數必須為整數必須為整數)(2) 類型在數的后面加字母 f f 或 F F,就為單精度數,否則處理成雙精度數。2022-3-15213. 字符型常量 可視字符常量 單引號括起來的單個可視字符例如:a、A 、+ 、3、 等 轉義字符常量單引號括起來的 與可視字符組合,例如:2022-3-1522 含 義 ASCII代碼 換行,將當前位置移到下一行開頭 10 水平制表(跳到下一

15、個Tab位置) 9 退格,將當前位置移到前一列 8 回車,將當前位置移到本行開頭 13 換頁,將當前位置移到下頁開頭 12 a 發出鈴聲 7 代表一個反斜杠字符“”92 代表一個單撇號字符 39 代表一個雙撇號字符34 到位八進制數所代表的字符 到位十六進制數所代表的字符 2022-3-1523例轉義字符的使用#include void main() printf ( ab ct derftgn); printf (htibbj kn); 程序運行輸出的運行結果:程序運行輸出的運行結果: 1 2 3 4 5 6 7 8 910 11 f a b c g d e h j i k顯示屏上的運行結果

16、顯示屏上的運行結果:(:(屏幕也顯示了,速度快未看清時,新代替舊)屏幕也顯示了,速度快未看清時,新代替舊) f g d e *r回到本行開頭,自此輸出字符 (包括空格和跳格經過的位置)將替代原有的字符*/ h j k2022-3-15244. 字符串常量 用雙引號括起的一個字符序列例如:ABC、123、a、 nt “ nGood morning 字符串常量的長度 :所包含的字符個數 字符串常量的存儲方式:規定:在每一個字符串常量的結尾加一個 “字符串結束標志”,以便系統據此判斷字符串是否結束。規定以字符作為字符串結束標志。 如:如:如果有一個字符串常量” ,實際上在內存中是:CHINA0 它占

17、內存單元不是個字符,而是個字符,最后一個字符為。但在輸出時不輸出。”2022-3-1525 是字符常量, “a”是字符串常量,二者不同。 如:如:假設被指定為字符變量 :char c c= a; “a” ;c “CHINA”; 結論:結論:不能把一個字符串常量賦給一個字符變量。a0“a”2022-3-15265. 符號常量 以標識符來代表的常量 事先編譯預處理命令define定義 編譯時先由系統替換為它所代表的常量,再進行編譯例如: 2022-3-15273.3.2 變量 1. 變量的有關概念 在程序運行過程中,其值改變的數據,稱為變量,變量用標識符表示,稱為變量名。 系統為變量分配存儲單元,

18、存儲變量的值。 編寫程序時通過變量名來存、取變量值。 變量名實際上是一個以一個名字對應代表一個地址,在對程序編譯連接時由編譯系統給每一個變量名分配對應的內存地址。從變量中取值,實際上是通過變量名找到相應的內存地址,從該存儲單元中讀取數據。2022-3-15282. 變量定義變量定義的一般格式變量定義的一般格式: 數據類型數據類型 變量變量1 1,變量變量2 2,;決定決定: :1.1.占內存的字節數占內存的字節數2.2.數的取值范圍數的取值范圍合法標識符合法標識符先定義,后使用先定義,后使用例如:int i; /* i為整型變量*/short c,d,e; /*c,d,e為短整型*/unsig

19、ned long p,g; /* p,g為無符號長整型 */float x,y; /* x,y為單精度型*/double z; /* z為雙精度型*/char ch1,ch2; /* ch1,ch2為字符型*/ 2022-3-1529main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data);變量定義可執行語句main() int a,b=2; a=1; float data; data=(a+b)*1.2; printf(“data=%fn”,data);變量定義位置:一般放在函數開頭變量定義位置:一般

20、放在函數開頭2022-3-15303. 變量的初始化:int i,j;double s;i=4;j=4*i-11;s=0.02*1000.0; 方法方法1 1 先定義變量先定義變量, ,再賦值再賦值 方法方法2 2 定義變量的同時定義變量的同時, ,賦初值賦初值int i=0;i=i+2;注意:注意:若對幾個變量賦同一個值,若對幾個變量賦同一個值,不能寫成不能寫成 intint a=b=c=5; a=b=c=5;而應寫成而應寫成 intint a=5, b=5, c=5; a=5, b=5, c=5;2022-3-1531變量定義和賦初值的作用變量定義和賦初值的作用編譯程序根據變量定義為其編譯

21、程序根據變量定義為其分配指定字節的內存單元分配指定字節的內存單元.地址int a=1, b=-3,c ;abc2字節2字節2字節地址地址.內存1-3隨機數隨機數2022-3-1532 如果一個變量在一個表達式中使用,那么只有該變如果一個變量在一個表達式中使用,那么只有該變量量初始化初始化后,表達式才能產生一個有意義的結果。后,表達式才能產生一個有意義的結果。 int i=0;i=i+2;int i;i=i+2;表達式表達式i=i+2i=i+2沒有意義,沒有意義,因為因為i i 沒有初始化沒有初始化表達式表達式i=i+2i=i+2有意義,有意義,因為因為i i 已經初始化已經初始化變量在使用之前

22、一定要有明確的值變量在使用之前一定要有明確的值2022-3-1533例: int student; stadent=19; /Undefined symbol statent in function main4. 變量的使用:先定義后使用2022-3-1534編譯程序根據變量定義為其分配指定字節的內存單元.地址int a=1, b=-3,c;abc2字節2字節2字節地址地址.內存1-3隨機數 變量 概念:其值可以改變的量 變量名與變量值 變量定義的一般格式: 數據類型 變量1,變量2,變量n; 變量初始化:定義時賦初值 例: int a,b,c; float data;決定分配字節數和數的表示

23、范圍合法標識符例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=z=1; 變量的使用:先定義,后使用例1 int student; stadent=19; /Undefined symbol statent in function main 例2 float a,b,c; c=a%b; /Illegal use of floating point in function main 變量定義位置:一般放在函數開頭main() int a,b=2; float data; a=1; data=(a+b)*1

24、.2; printf(“data=%fn”,data);變量定義可執行語句main() int a,b=2; a=1; float data; data=(a+b)*1.2; printf(“data=%fn”,data);2022-3-15353.4 各類數值型數據間的混合運算各類數值型數據間的混合運算 doublefloatlongunsignedintchar,short低高運算對象類型不同時轉換運算對象類型不同時轉換intintdoubledoubledoubledoubledoubledouble10+a +i*f - d/l例例 int i; float f; double d;

25、long l;低級別轉換為高級別低級別轉換為高級別隱式類型轉換隱式類型轉換混合運算:整型(包括int,short,long)、浮點型(包括float,double)可以混合運算。在進行運算時,不同類型的數據要先轉換成同一類型,然后進行運算.2022-3-15363.5運算符和表達式C運算符算術運算符:(+ - * / % + -)關系運算符:( = !=)邏輯運算符:(! & |)位運算符 :( | &)賦值運算符:(= 及其擴展)條件運算符:(?:)逗號運算符:(,)指針運算符:(* &)求字節數 :(sizeof)強制類型轉換:(類型)分量運算符:(. -)下標運算

26、符:()其它 :(( ) -)2022-3-1537學習運算符應注意: 運算符功能 與運算量關系要求運算量個數要求運算量類型 運算符優先級別 結合方向 結果的類型2022-3-15383.5.1算術運算符和算術表達式(1)基本算術運算符: + - * / %結合方向:從左向右優先級: - -* / % - + - (2) (3) (4)說明:“-”可為單目運算符時,右結合性兩整數相除,結果為整數%要求兩側均為整型數據例 5/2 = -5/2.0 =例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2例 5/2 = 2 -5/2.0 = -2.5例 5%2 = 1 -5%2 = -

27、1 1%10 = 1 5%1 = 0 5.5%2 ()2022-3-1539 (2) 強制類型轉換運算符 顯式轉換 一般形式:(類型名)(表達式)例 (int)(x+y) (int)x+y (double)(3/2) (int)3.6 說明:強制轉換得到所需類型的中間變量,原變量類型不變 例 main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 結果:x=3.600000,i=3精度損失問題較高類型向較低類型轉換時可能發生2022-3-1540(3 3)自增、自減運算符)自增、自減運算符+ -+ -作用:使變量值加1或

28、減1種類:前置 +i, -i (先執行i+1或i-1,再使用i值)后置 i+,i- (先使用i值,再執行i+1或i-1)例 j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b; /k=4,j=4/k=3,j=4/4/3/c=20,a=4/c=15,a=42022-3-1541(3)自增、自減運算符+ -作用:使變量值加1或減1種類:前置 +i, -i (先執行i+1或i-1,再使用i值)后置 i+,i- (先使用i值,再執行i+1或i-1)說明:

29、+ - 不能用于常量和表達式,如5+,(a+b)+ -結合方向: 自右向左優先級:- + - -* / % -+ - (2) (3) (4)例 -i+ -(i+) i=3; printf(“%d”,-i+); /-3 例 j+k; (j+)+k;例 -i+ i=3; printf(“%d”,-i+); 注意:不提倡寫成i+j的形式,而應寫成 (i+)+j的形式 2022-3-1542算元算元 符號符號樣例樣例含義含義結合性結合性優先級優先級二元二元= x=2.5在變量在變量x中保存數值中保存數值2.5從右向左從右向左14注意:注意:賦值運算符的賦值運算符的左操作數左操作數必須是必須是變量變量(

30、不能是(不能是常量常量或或表達式表達式)一般地,一般地,右操作數右操作數的的類型類型應與變量的類型相匹配。應與變量的類型相匹配。3.5.2 賦值運算符和賦值表達式賦值運算符和賦值表達式(1 1)賦值運算符)賦值運算符作用:作用:將右邊的值賦給左邊的變量。將右邊的值賦給左邊的變量。2022-3-1543 若若賦值運算符的賦值運算符的兩個操作數兩個操作數類型不一致,類型不一致,編譯系統編譯系統則則右操右操作數作數的類型的類型轉換為轉換為變量變量的類型,然后再賦值。的類型,然后再賦值。 將較短類型轉換為較長類型是安全操作。反之,可能安全將較短類型轉換為較長類型是安全操作。反之,可能安全也可能不安全。

31、也可能不安全。int i;double s;i=3.56;s=3;不安全不安全,截去小數部分截去小數部分安全安全,大多數大多數int類型均可用類型均可用double類型精確表示類型精確表示(2) (2) 賦值運算符中的賦值運算符中的類型轉換類型轉換例:2022-3-15442. 整型數據賦給實型變量,數值不變,但按實數形式存放. 1. 將實型數據(無論單,雙精度)賦給整型變量時,舍棄小數.4. 將intlong int, 進行符號擴展。 即: 符號擴展, 低16位long 的低16位。5. long int int 則高16位截斷。3. 字符型數據賦給整型變量時:(2)字符帶符號整型變量,則字

32、符高位擴展。(1)字符無符號整型變量,則存入低8位,高8位補零。6. 將unsigned int 型long int高位補0。而位數相同部分直接賦值 unsigned int int unsigned long long unsigned short short原值傳送,但數據大小不能超值。 如: unsigned int a=65535; int b; b=a;則越界。2022-3-15457. 非unsigned 型長度相同的unsigned型數據,原樣傳送(包括符號位)總體規律:總體規律:(1)較短類型轉換為較長類型是安全操作,但要考慮符號擴展。)較短類型轉換為較長類型是安全操作,但要考

33、慮符號擴展。(2)較長類型轉換為較短類型要發生截斷,可能安全也可能不)較長類型轉換為較短類型要發生截斷,可能安全也可能不安全。安全。2022-3-1546float f;double d=123.456789e100; f=d;不安全,溢出錯誤,結果無意義。不安全,溢出錯誤,結果無意義。但并不檢測錯誤但并不檢測錯誤不同類型的浮點型數據之間的賦值:不同類型的浮點型數據之間的賦值: double型數據賦給型數據賦給float變量:截取前變量:截取前7位有效數字,位有效數字,且且要避免溢出要避免溢出 float型數據賦給型數據賦給double變量:安全變量:安全例:2022-3-1547int i=

34、289;char c;c=i;不安全,不安全,i的值超出的值超出char c表示表示范圍,只轉換了范圍,只轉換了char 能夠表能夠表示的較低的位(示的較低的位(低低8位位),結),結果無意義。果無意義。 整型數據賦值給字符型變量整型數據賦值給字符型變量icc=3300 00 00 01 00 10 00 01 00 10 00 01 例:2022-3-1548int a;long b8;a=b;安全,安全, 8在在int表示范圍內表示范圍內例:2022-3-1549int a;long b65536;a=b;不安全,不安全, b的值超出的值超出int a表示范圍,只轉表示范圍,只轉換了換了i

35、nt 能夠表示的較低的位(能夠表示的較低的位(低低16位位),),結果無意義。結果無意義。 a=000 00 00 00 00 00 00 0000 00 00 00 00 00 00 0100 00 00 00 00 00 00 00例:2022-3-1550unsigned a;int b = -1;a=b;不安全,負數均不可用不安全,負數均不可用unsigned表示,結果無意義。表示,結果無意義。 ba-1a=6553511 11 11 11 11 11 11 1111 11 11 11 11 11 11 11例:2022-3-1551(3 3)復合賦值運算符)復合賦值運算符在賦值符在賦

36、值符“”之前加上其他運算符,可以構成復合的運算符。之前加上其他運算符,可以構成復合的運算符。例如例如: : 等價于 * 等價于 *() 等價于 以“”為例來說明,它相當于使進行一次自加()的操作。即先使加,再賦給。2022-3-1552注意注意: :如果如果“=”=”右側是包含若干項的表達式,則相當于它有括號。右側是包含若干項的表達式,則相當于它有括號。如:如: x %= y+3 x %= (y+3) |_ x = x %(y+3)(不要錯寫成x=x%y+3) 語言規定可以使用種復合賦值運算符:語言規定可以使用種復合賦值運算符:,* *,| | 2022-3-1553復合賦值運算符的復合賦值運算符的結合性是從右到左。結合性是從右到左。 如:如:a+=a-=a*a分析分析: :此賦值表達式的求解步驟如下 先進行“*”的運算, 它相當于*,a的值為144132。再進行“”的運算,相當于=a+(-132),a的值為132-132-264。2022-3-1554算元算元 符號符號含義含義結合性結合性樣例樣例優先級優先級二元二元 ,連接一組表達連接一組表達式式從左到從左到右右a=1, b=215逗號運算符逗號運算符:將兩個表達式連接起來將兩個表達式連接起來,又稱為又稱為“順序求值運算符順序求值運算符”逗號表達式的一般形式:逗號表達式的一般

溫馨提示

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

評論

0/150

提交評論