基本数据类型运算符与表达式_第1页
基本数据类型运算符与表达式_第2页
基本数据类型运算符与表达式_第3页
基本数据类型运算符与表达式_第4页
基本数据类型运算符与表达式_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基本数据类型运算符与表达式第1页,共77页,2022年,5月20日,12点28分,星期二1本章主要内容(1)熟悉和掌握C+中数据类型的分类及使用,注意它与C数据类型间的区别。(2)熟练掌握C+中各种运算符的使用。(3)熟练掌握C+中表达式的描述和计算。(4)理解和掌握C+中数据的输入和输出。第2页,共77页,2022年,5月20日,12点28分,星期二22.1 数据类型 C+提供了十分丰富的预定义数据类型,称为基本数据类型。除了基本数据类型外,C+还提供了构造数据类型,包括数组、结构体、共用体(联合体)、枚举和类等。C+可以使用的数据类型如图所示:第3页,共77页,2022年,5月20日,12

2、点28分,星期二32.1.1 基本数据类型C+提供的5种基本数据类型各自所占的内存空间是不同的,因此所表示的数据的范围大小也不同。在5种基本数据类型中:字符型用于处理ASCII码字符整型用于处理整型数据浮点型用于处理带小数的实数布尔型用于表示的逻辑的true和false无值型主要用于处理函数和指针第4页,共77页,2022年,5月20日,12点28分,星期二42.1.2 类型修饰符C+的类型修饰符包括:signed 有符号型unsigned无符号型short短型long长型第5页,共77页,2022年,5月20日,12点28分,星期二5在基本数据类型(除void类型外)前加上类型修饰符后,C+

3、的基本数据类型如表2.2所示: 第6页,共77页,2022年,5月20日,12点28分,星期二6说明:(1)表中带 的部分表示是可以省略的,如short int可以写为short int或简写为short,二者的含义是相同的。(2)4种修饰符都可以用来修饰整型和字符型。用signed修饰的类型的值可以为正数或负数,用unsigned修饰的类型的值只能为正数。(3)用short修饰的类型的值一定不大于对应的整数,用long修饰的类型的值一定不小于对应的整数。 第7页,共77页,2022年,5月20日,12点28分,星期二72.2 常量和变量数据可分为常量和变量两大类。常量(Constant):是

4、指在程序的执行过程中其值不会发生改变的数据。变量(Variable):是指在程序执行过程中其值可以被改变的数据。 第8页,共77页,2022年,5月20日,12点28分,星期二82.2.1 常量常量按照不同的数据类型可以分为:字符型常量、整型常量、浮点型常量以及字符串常量等。程序是根据程序中常量的书写格式来区分它是属于哪种类型的常量。第9页,共77页,2022年,5月20日,12点28分,星期二91整型常量由于整数类型可分为int,short int等类别,因此整型常量也可分为以上类别。注意:在程序中书写整型常量时没有小数部分。 在程序中,用户根据需要分别可以用十进制、八进制和十六进制的形式书

5、写整型常量。 (1)十进制格式:由数字0至9和正、负号组成,书写时直接写出数字,如123,516等。若为long int型的常量,需在常量后加一个字母l或L,例如123L。第10页,共77页,2022年,5月20日,12点28分,星期二10(2)八进制格式:以0开头的数字(0至7)序列,如011,010007,0177777等。如011表示八进制数11,即(11)8,它相当于十进制数9。(3)十六进制格式:以0 x或0X开头的数字(数字0至9、字母a至f)序列,如0 x11,0 x78AC,0 xFFFF等。如0 x11表示十六进制数11,即(11)16,它相当于十进制数17。第11页,共77

6、页,2022年,5月20日,12点28分,星期二112浮点型常量浮点型常量可以用十进制小数形式或指数形式表示。注意:在程序中无论采用十进制小数形式还是指数形式,在内存中都是以指数形式存储的。第12页,共77页,2022年,5月20日,12点28分,星期二12(1)十进制小数形式:一般由整数部分和小数部分组成,也可省略其一,但不能二者皆省。例如: 0.345也可表示为.345,45.0也可表示为45.; 如果在实数的数字后面加上字母F或f,表示此数为单精度浮点数; 如果加上字母L或l,表示此数为长双精度数。第13页,共77页,2022年,5月20日,12点28分,星期二13(2)指数形式:也就是

7、通常所讲的科学记数法的描述形式。 数符 数字部分 指数部分其中,数字分部分和指数部分缺一不可,指数部分以E或e开始,E或e表示后面的数是以10为底的幂.如:10-4可表示为1e-4,但不能写成e-4,如:-0.00726可以表示为-0.726e-2,-7.26e-3,-72.6e-4等形式,它们所起的作用是相同的。第14页,共77页,2022年,5月20日,12点28分,星期二143字符型常量字符型常量分为普通的字符常量和转义字符常量。(1)普通的字符常量 用一对单引号括起来的一个字符就是字符型常量,如s,Y都是合法的字符常量。第15页,共77页,2022年,5月20日,12点28分,星期二1

8、5注意:单引号只是字符与其他部分的分隔符,不是字符的一部分,并且不能用双引号代替单引号,如Y不代表字符常量。字符常量只能包括一个字符,如ab是不合法的。在单引号中的字符不能是单引号或反斜杠,和都是非法的字符常量字符常量区分大小写,如Y和y表示两个不同的字符常量。第16页,共77页,2022年,5月20日,12点28分,星期二16(2)转义字符常量在C+中,有一些字符用于控制输出或编译系统本身保留,无法作为字符常量来表示。 C+规定,采用反斜杠后跟一个字母来代表一个控制字符,反斜杠后的字符不再作原有的字符使用,而具有新的含义。转义字符在屏幕上是不能显示的。 C+中常用的转义字符如表2.3所示。第

9、17页,共77页,2022年,5月20日,12点28分,星期二174字符串常量用一对双引号括起来的一个或多个字符的序列称为字符串常量或字符串。字符串以双引号为定界符,双引号不作为字符串的一部分,可以将转移字符加入字符串,转义字符占用一个字节。如:Hello A Good Morning! I sayn 都是合法的字符串常量。 第18页,共77页,2022年,5月20日,12点28分,星期二18字符串中的字符的个数称为该字符串的长度。字符串常量要用字符数组来存放。在存储时,系统自动在字符串的末尾加以字符串结束标志,即转义字符 0 。如 Hello 在内存中占用6个字节, I sayn 占用7个字

10、节。第19页,共77页,2022年,5月20日,12点28分,星期二19字符串可以写在多行上,必须用续行符反斜线 表示下一行字符是这一行字符的延续。例如:coutThis is a book.;该语句输出结果为:This is a book.第20页,共77页,2022年,5月20日,12点28分,星期二205符号常量常量也可用一个标识符来表示,称为符号常量。符号常量的一般定义格式如下: #define 符号名 常量值例如:#define MAX 30 /不是语句,末尾不加分号main().此处,#define 语句定义MAX为30,凡在程序中出现MAX的地方都代表30,它可与常量进行运算。

11、第21页,共77页,2022年,5月20日,12点28分,星期二21使用符号常量可以使得符号的含义更加清楚,在需要改变常量值时,只需改变第一行中的常量值即可,程序中所有的MAX的值都会相应地改变。注意:(1)它不同于变量,在其作用域内其值不能改变和赋值。上例中如再用MAX=40;这一语句进行赋值则是错误的。(2)符号常量名一般用大写,而变量名用小写,以示区别。第22页,共77页,2022年,5月20日,12点28分,星期二22程序中常量的表示方法 在程序中的常量有以下3种表示方法。(1)在程序中直接写入常量例如:-200,3.4E-10, A,1,0 x120,045,5.35,1000lin

12、t i; char s; float f;i=20; s=a; f=2.0;第23页,共77页,2022年,5月20日,12点28分,星期二23(2)利用#define定义宏常量 #define 宏名 常数例如:#define PI 3.14s=2*PI*r;第24页,共77页,2022年,5月20日,12点28分,星期二24(3)利用const定义正规常数 const 数据类型标识符 常数名=常量值;说明: const必须放在被修饰类型符和类型名的前面。 数据类型是一个可选项,用来指定常数值的数据类型,如果省略了该数据类型,那么,C+编译程序认为它是int类型。第25页,共77页,2022年

13、,5月20日,12点28分,星期二252.2.2 变量1变量的概念变量是用于保存程序运算过程中所需要的原始数据、中间运算结果和最终结果的其值可以改变的量。 2定义变量每一变量都要先定义、后使用;定义变量3种格式:修饰符 数据类型标识符 变量名列表;修饰符 数据类型标识符 变量名=初始化值;修饰符 数据类型标识符 变量名1=初始值1,变量名2=初始值2,;第26页,共77页,2022年,5月20日,12点28分,星期二26说明:(1)此处的类型标识符表示要定义的变量所属的数据类型,它可以是前面介绍的的数据类型标识符中的一种。例如int,double,bool等。(2)变量名是每个变量的名称,由用

14、户自己命名,要遵循命名规则。(3)定义变量时,可以在类型前面加上一些修饰符来表示这些变量的使用方法。 C+中常用的变量定义修饰符如表2.4所示。第27页,共77页,2022年,5月20日,12点28分,星期二27如:char a,b; /定义字符型变量aextern int c;/c在其它函数中已经定义,这里只 是用到该变量,对该变量进行声明static int i=1000; /定义静态整型变量i,i的初始值为1000float a=2,b=3,c; /定义变量 a,b,c,且a、b的初始值分别为2,3第28页,共77页,2022年,5月20日,12点28分,星期二283变量的初始化在定义变

15、量的同时可以给变量赋一个初值,称为变量的初始化。方法是在定义变量时,在变量名的后面写上“=初值”。第29页,共77页,2022年,5月20日,12点28分,星期二29例如:int a=3,b=3*(2+9);在对多个变量赋于同一初值时,必须分别指定。应当写成:int a=3,b=3,c=3;或者:int a,b,c=3;a=b=c;而不能写成:int a=b=c=3;第30页,共77页,2022年,5月20日,12点28分,星期二304定义变量的位置变量的定义一般可有以下3种位置。(1)在函数体内部在函数体内部定义的变量称为局部变量,这种局部变量只在进入定义它的函数体时起作用,离开该函数体后该

16、变量就消失(被释放),即不再起作用。因此,不同函数体内部可以定义相同名称的变量,而互不干扰。 第31页,共77页,2022年,5月20日,12点28分,星期二31如:void func1(void) int y; y=2;void func2(void) int y; y=-100; 本例中两个函数体内部都分别定义了变量y,但它们都只能在各自的函数体内起作用,互不干扰,都是局部变量。第32页,共77页,2022年,5月20日,12点28分,星期二32(2)形式参数当定义一个有参函数时,函数名后面括号内的变量统称为形式参数。int is_in(char *a, char b) while(*a)

17、 if (*a= =b) return 1; else a+; return 0; 本例中函数is_in( )后面括号内的变量a和b是该函数的形式参数,它们都只能在该函数体内起作用,是该函数的局部变量。第33页,共77页,2022年,5月20日,12点28分,星期二33(3)全局变量在所有函数体的外部定义的变量,其作用范围是整个程序,并在整个程序运行期间有效。【例2-1】全局变量的使用。第34页,共77页,2022年,5月20日,12点28分,星期二342.3 运算符和表达式2.3.1 算术运算符和算术表达式算术运算符就是对数据进行算术运算的运算符。如:加、减、乘、除等,是在程序中使用最多的一

18、种运算符,C+的算术运算符如表2.5所示。第35页,共77页,2022年,5月20日,12点28分,星期二351自增和自减运算符自增(+)和自减(-)的作用是使变量的值增1或减1。运算符(+)和(-)既可放在变量的前面,也可放在变量的后面,但作用的效果是不同的,如表2.6所示。【例2-2】 自增和自减运算符的使用。第36页,共77页,2022年,5月20日,12点28分,星期二362数据类型转换C+中类型转换有两种方式,即隐式类型转换和显式类型转换。(1)隐式类型转换在表达式中经常会有不同类型的数据进行运算,此时编译器会自动将它们转换为相同类型后再进行运算,赋值时将所赋值转换成被赋值变量类型,

19、这种由编译器自动完成的类型转换称为隐式类型转换。隐式类型转换是按照从低到高的顺序进行的,如图2-2所示。第37页,共77页,2022年,5月20日,12点28分,星期二37低高第38页,共77页,2022年,5月20日,12点28分,星期二38例如: e=5*b+3.14-3L/2.0的顺算顺序如下:进行5*b的运算,先将b转换成整数98,运算结果为490。进行490+3.14的运算,将490和3.14转换成double型,结果为493.14。计算3L/2.0,首先转换为double型,结果为1.5。进行的运算,结果为double型的491.64。第39页,共77页,2022年,5月20日,1

20、2点28分,星期二39(2)显式类型转换显式类型转换,也称为强制类型转换,指编程人员利用类型转换运算符显式地将某一数据从一种数据类型转换为另一种数据类型。类型名 (表达式) 或 (类型名)表达式【例2-3】显式类型转换。第40页,共77页,2022年,5月20日,12点28分,星期二402.3.2 赋值运算符和赋值表达式赋值运算符的用法格式为: 变量名 赋值运算符 常量、变量或表达式说明:被赋值的目标即赋值运算符左边的量必须是变量,而不能是常量或表达式。也就是说,常量或表达式是不能被赋值的。C+中的赋值运算符如表2.7所示。第41页,共77页,2022年,5月20日,12点28分,星期二41(

21、3)意区分赋值运算符“=”与数学上的“等号”int x,y; /定义变量x,y为int类型变量x=10; /将变量x赋值为10 x=x+20; /将30赋给变量xy=x+;/将x的值赋给y(值为30),变量x值变成31。 y-=x+5;/等价于y=y-(x+5);表达式值为- 6,y值为-6x%=y+10 /等价于x=x%(y+10);表达式为3,y值为3第42页,共77页,2022年,5月20日,12点28分,星期二422.3.3 sizeof运算符sizeof运算符的功能是求某一数据类型或某一变量在内存中所占空间的字节数。sizeof(变量名或数据类型) 或 sizeof 变量名或数据类型

22、sizeof运算符的应用如【例2-4】所示。第43页,共77页,2022年,5月20日,12点28分,星期二432.3.4 关系运算符和关系表达式 关系运算符就是对两个量之间进行比较,判断比较结果的运算符。C+的关系运算符如表2.8所示。第44页,共77页,2022年,5月20日,12点28分,星期二44由关系运算符将两个表达式连接形成的运算式子称为关系表达式,一个关系表达式的值是一个逻辑值。表达式 关系运算符 表达式其中:表达式可以是算数表达式、关系表达式、逻辑表达式、赋值表达式或字符表达式。当关系表达式成立时,其值为真(1);当关系表达式不成立时,其值为假(0)。第45页,共77页,202

23、2年,5月20日,12点28分,星期二45假设a=1,b=20,c=3,则:ab?a:b的值为4。第50页,共77页,2022年,5月20日,12点28分,星期二502.3.7 位运算符 1位运算符及其运算规则位是计算机表示信息的最小单位,一般用0和1表示。位运算符是指能进行二进制位运算的运算符。位运算符的运算对象必须为整数。C+提供的位运算符如表2.11所示。第51页,共77页,2022年,5月20日,12点28分,星期二51位运算的运算规则为:(1)按位与&:两个运算量相应的位都是1,则该位的结果值为1,否则为0。(2)按位或|:两个运算量相应的位只要有一个是1,则该位的结果值为1,否则为

24、0。(3)按位异或:两个运算量相应的位不同,则该位的结果值为1,否则为0。第52页,共77页,2022年,5月20日,12点28分,星期二52(4)按位取反:将运算量的每一位取反,即将1变0,0变1。(5)按位左移:将操作数中的每一位向左移动指定的位数,移出的位被舍弃,空出的位补0。(6)按位右移算术运算符关系运算符逻辑运算符条件运算符赋值运算符C+中,对表达式求值时,先按优先级确定运算次序,再将优先级相同的运算符按结合性进行运算。第57页,共77页,2022年,5月20日,12点28分,星期二572.4 数据的输入与输出在C+语言中,数据的输入和结果的输出是分别使用系统所提供的输入流对象ci

25、n和输出流对象cout来完成的。在使用过程中,只要在程序的开头嵌入相应的头文件“iostream.h”即可。 第58页,共77页,2022年,5月20日,12点28分,星期二582.4.1 数据的输出cout输出流对象cout输出数据语句的一般格式为: cout数据1数据2数据n;说明:(1)cout是系统预定义的一个标准输出设备(一般代表显示器);“”是输出操作符,用于向cout输出流中插入数据(2)cout的作用是向标准输出设备上输出数据,被输出的数据可以是常量、已有值的变量或是一个表达式。【例2-5】cout语句的使用第59页,共77页,2022年,5月20日,12点28分,星期二59(

26、3)可以在cout输出流中插入C+中的转义字符。如:cout the value of a:n;couta;表示输出完字符串Input the value of a:后,在下一行输出变量a的值。(4)可以将多个被输出的数据写在一个cout中,各输出项间用“”操作符隔开即可,但要注意cout首先按从右向左的顺序计算出各输出项的值,然后再输出各项的值。如:cout value of a:a value of b:b The result is : sqrt(a*a+b*b);再如:设变量i的值为10,则couti,i+,i+;的输出结果为:12,11,10(5)一个cout语句也可拆成若干行书写,

27、但注意语句结束符“;”只能写在最后一行上。如:对于上面的语句也可写成如下形式:第60页,共77页,2022年,5月20日,12点28分,星期二60cout value of a: /注意行末无分号 a value of b: b The result is : sqrt(a*a+b*b); /在此处书写分号(6)在cout中,实现输出数据换行功能的方法:既可使用转义字符“n”,也可使用表示行结束的流操作子endl。如:coutThis is first Line.nThis is second line. ;上面语句可等价地写为:coutThis is first Line.endlThis

28、is second line. ;第61页,共77页,2022年,5月20日,12点28分,星期二61(7)在cout中还可以使用流控制符控制数据的输出格式,但使用这些流控制符时,要在程序的头上嵌入头文件#include 。常用的流控制符及其功能如表2.14所示。表2.14 I/O流的常用控制符控制符功能dec十进制数输出hex十六进制数输出oct八进制数输出setfill(c)在给定的输出域宽度内填充字符csetprecision(n)设显示小数精度为n位setw(n)设域宽为n个字符setiosflags(ios:fixed)固定的浮点显示第62页,共77页,2022年,5月20日,12点

29、28分,星期二62setiosflags(ios:scientific)指数显示setiosflags(ios:left)左对齐setiosflags(ios:right)右对齐setiosflags(ios:skipws)忽略前导空白setiosflags(ios:uppercase)十六进制数大写输出setiosflags(ios:lowercase)十六进制数小写输出setiosflags(ios:showbase)按十六八进制输出数据时,前面显示前导符0 x;第63页,共77页,2022年,5月20日,12点28分,星期二63 设置域宽:所谓域宽就是被输出数据所占的输出宽度(单位是字符

30、数)。设置域宽可以使用流控制符setw(n)和cout的方法cout.width(n) 其中n为正整数,表示域宽。但是, cout.width(n)和setw(n)二者都只对下一个被输出的数据有作用,若一个输出语句内有多个被输出的数据,而要保持一定格式域宽时,需要在每一输出数据前加上cout.width(n)或setw(n)。 此外,当参数n的值比实际被输出数据的宽度大时,则在给定的域宽内,数据靠右输出,不足部分自动填充空格符;若被输出数据的实际宽度比n值大时,则数据所占的实际位数输出数据,设置域宽的参数n不再起作用。第64页,共77页,2022年,5月20日,12点28分,星期二64【例2-

31、6】cout流控制符setw的使用。#include #include void main()int a=21,b=999; coutsetw(3)asetw(4)asetw(5)aendl; coutsetw(3)bsetw(4)bsetw(5)bendl; coutsetw(3)a+bsetw(4)a+bsetw(5)a+bendl; 其输出结果是:21 21 21 /程序中第一个cout的输出结果999999 999 /程序中第二个cout的输出结果102010201020 /程序中第三个cout的输出结果第65页,共77页,2022年,5月20日,12点28分,星期二65 设置域内填充

32、字符:在默认情况下,当被输出的数据未占满域宽时,会自动在域内靠左边填充相应个数的空格符。但我们也可以设置在域内填充其他的字符,方法是利用cout的fill方法cout.fill(c)或setfill(c)。 cout.fill(c)上和 setfill(c)可以对所有被输出的数据起作用。【例2-7】 在例2-6的基础上增加域内填充字符的功能。#include “iostream.h”#include “iomanip.h”void main()int a=21,b=999; cout.fill(#); /设置域内填充字符为#字符 coutsetw(3)asetw(4)asetw(5)aendl

33、;coutsetw(3)bsetw(4)bsetw(5)bendl;cout.fill(%); /将域内填充字符改为%字符 coutsetw(3)a+bsetw(4)a+bsetw(5)a+bendl;第66页,共77页,2022年,5月20日,12点28分,星期二66其输出结果是:#21#21#21 /程序中第一个cout的输出结果, 未占满域宽的部分填充#字符。999#999#999 /程序中第二个cout的输出结果10201020%1020 /程序中第三个cout的输出结果, 未占满 域宽的部分填充%字符。 当采用流控制符设置填充字符时,上面程序代码也可等价地改为:#include #i

34、nclude void main()inta=21,b=999;coutsetw(3)setfill(#)asetw(4)asetw(5)aendl;coutsetw(3)bsetw(4)bsetw(5)bendl;coutsetw(3)setfill(%)a+bsetw(4)a+bsetw(5)a+bendl;第67页,共77页,2022年,5月20日,12点28分,星期二67 设置输出数据的进位计数制:在默认情况下,被输出的数据按十进制格式输出。但可以使用流控制符hex和oct控制数据的输出格式为十六进制和八进制,一旦设置成某种进位计数制后,数据的输出就以该种数制为主,可利用流控制符dec

35、将数制重新成十进制。【例2-8】在例2-7的基础上增加设置输出数据进位计数制的功能。#include #include void main() int a=21,b=999; /设置以十六制格式输出数据coutsetw(3)setfill(#)hexasetw(4)asetw(5)aendl; coutsetw(3)bsetw(4)bsetw(5)bendl;coutsetw(3)setfill(%)a+bsetw(4)a+bsetw(5)a+bendl;/设置以八制格式输出数据coutsetw(3)setfill(#)octasetw(4)asetw(5)aendl; coutsetw(3)

36、bsetw(4)bsetw(5)bendl;coutsetw(3)setfill(%)a+bsetw(4)a+bsetw(5)a+bendl;/设置以十制格式输出数据coutsetw(3)setfill(#)decasetw(4)asetw(5)aendl;coutsetw(3)bsetw(4)bsetw(5)bendl;coutsetw(3)setfill(%)a+bsetw(4)a+bsetw(5)a+bendl;第68页,共77页,2022年,5月20日,12点28分,星期二68程序的输出结果为:#15#15#15 /以十六进制格式输出数据3e7#3e7#3e73fc%3fc%3fc#2

37、5#25#25 /以八进制格式输出数据17471747#174717741774%1774#21#21#21 /以十进制格式输出数据999#999#99910201020%1020第69页,共77页,2022年,5月20日,12点28分,星期二69 设置浮点数的输出格式:对于浮点数,既可以用小数格式输出,也可以用指数格式输出。这可以分别通过setiosflags(ios:fixed)和setiosflags(ios:scientific)来控制。【例2-9】 已知圆的半径r=6.779,计算并输出圆的周长和面积,要求分别用指数和小数两种格式输出。#include #include void main() const double pi=3.14159; double r=6.779,c,s; c=2.0*pi*r; /计算圆的周长 s=pi*r*r; /计算圆的面积第70页,共77页,2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论