第2章数据类型_第1页
第2章数据类型_第2页
第2章数据类型_第3页
第2章数据类型_第4页
第2章数据类型_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、第2章 数据类型 基本数据类型的特征 数据常量 数据类型转换 2.1 数据类型分类数据类型分类 程序设计中需要处理各种不同的数据,不同的数据类型决程序设计中需要处理各种不同的数据,不同的数据类型决定了不同的数据性质和取值范围。定了不同的数据性质和取值范围。C语言的数据类型语言的数据类型为为2.1基本数据类型基本数据类型说明:说明:int占用字节数:标准占用字节数:标准C:2B,VC+:4B;可以;可以通过通过sizeof(变量名变量名)函数获得其所占字节数函数获得其所占字节数2.1基本数据类型基本数据类型基本型基本型短整型短整型长整型长整型无无 符符号号型型无符号无符号整型整型无符号无符号短整

2、型短整型无符号无符号长整型长整型 signed intsigned short int signed long intunsigned intunsigned shortunsigned long32(4B)16(2B)32(4B)32(4B)16(2B)32(4B)0(232 1)0(216 1)0655350(232 1) 说说 明明 形形 式式 所占位数所占位数(字节字节) 数数 的的 范范 围围 231(231 1)215(215 1)-32768+32767231(231 1)有符号数有符号数2.1基本数据类型基本数据类型数据类型的说明数据类型的说明: (表示数范围表示数范围)字符型

3、字符型:占:占1字节(包含符号和无符号字节(包含符号和无符号2种)种)整型整型:短整型:短整型=基本整型基本整型长整型(包含符号和无符号长整型(包含符号和无符号2种)种)有符号数、无符号数有符号数、无符号数浮点数浮点数:floatdouble=long double1.3.3名字与声明nC语言符号集n大小写英文字母n数字字符:0-9n下划线n空白n括号: ()n标点符号:; , “” . 等1.3.3名字与声明n标识符:表示变量、常量、函数、数组、类型等的名字,只能由只能由字母、数字和下划线字母、数字和下划线三种字符组三种字符组 成,且第一个字符必须为字母或下划线。成,且第一个字符必须为字母或

4、下划线。如:如:x, s, x1, Student_1, sum0,CTGUn关键字(保留字):系统具有特殊意义的单词,共32个2.2 数据常量数据常量n常量:常量:在程序运行过程中,其值不能被改在程序运行过程中,其值不能被改变的量变的量1)不同的常量类型)不同的常量类型n整型常量:整型常量: 2 , 123 , -43n实型常量:实型常量:5.9 , 12.0 , -12.6n字符常量:字符常量:a , A , +n字符串常量:字符串常量:“CHINA”, “A”2)程序中直接使用常量)程序中直接使用常量如:如: i=5;2.2 数据常量数据常量n常量常量 3)符号常量:在程序开始处)符号常

5、量:在程序开始处n定义:定义: #define 符号常量名符号常量名 常量常量 例:例:#define PI 3.14159n作用:经常变动的值,或经常使用的值作用:经常变动的值,或经常使用的值n说明:符号常量的值在其作用域内不能改变,也不说明:符号常量的值在其作用域内不能改变,也不能再被赋值;能再被赋值;n注意:注意:符号常量名符号常量名大写,变量名大写,变量名小写小写。例:输入园的面积,计算园的周长例:输入园的面积,计算园的周长无分号;无分号;可在函数外或函数内定义可在函数外或函数内定义2.2 数据常量数据常量一一. 整型常量整型常量1.3种进制:种进制:n十进制整数。如:十进制整数。如:

6、123,-346,0;n八进制整数。以八进制整数。以0开头的整数。如:开头的整数。如:0123,-012;n十六进制整数。以十六进制整数。以0 x开头的整数。如:开头的整数。如:0 x100,-0 x12; 例:例:15,015,0 x15 分别表示十进制数分别表示十进制数15,13和和212.2 数据常量数据常量一一. 整型常量整型常量2.整数常量类型的确定:整数常量类型的确定:在在没有任何特别标志没有任何特别标志的情况下,可以按照常数所在的范的情况下,可以按照常数所在的范围,决定其类型围,决定其类型3.3.后缀字母标识法后缀字母标识法:(:(函数调用或表达式计算函数调用或表达式计算) )n

7、用用L L或或l l表示表示longlong类型整数。类型整数。n用用LLLL或或llll表示表示long longlong long类型整数。类型整数。n用用U U或或u u表示表示unsignedunsigned类型。类型。2.2 数据常量数据常量二二. 实型常量实型常量1)十进制数形式十进制数形式:由正、负号,数字和小数点组成(必须有小数点)由正、负号,数字和小数点组成(必须有小数点)例:例: 0.123 .123 -123.0 123. 0.02)指数形式(科学计数法)指数形式(科学计数法):字母字母e(或或E)之前必须有数字,且之前必须有数字,且e后面的指数必须后面的指数必须为整数。

8、为整数。例:例: 34.5e2或或34.5E2都代表都代表34.51023)后缀形式后缀形式: f或F表示float类型; l或L表示long double类型2.2 数据常量数据常量三三. 字符常量(字符常量(1字节,字节,存放存放ASCII码)码)一对一对单引号单引号括起来的单个字符。括起来的单个字符。1)一般字符(可见字符)一般字符(可见字符)如:如: A,a,+,5,? 注意注意:单引号中间的字符不能是单引号或反斜线,单引号中间的字符不能是单引号或反斜线,即:即:和和 ,而只能是,而只能是 和和。(:转义:转义)2.2 数据常量数据常量三三. 字符常量字符常量2)转义字符(控制字符):

9、)转义字符(控制字符):以一个以一个“”开头开头 的字符序列的字符序列如:如: n,t,b例:例:#include void main()printf(“XYZb=n);2.2 数据常量数据常量n 换行(光标到下一行开始处)换行(光标到下一行开始处) t 横向跳格横向跳格(跳到下一个输出区跳到下一个输出区第第9位,每区位,每区8位位并清并清 除跳过区域字符除跳过区域字符) 反斜杠字符反斜杠字符“” b 退格(光标后退,不回删)退格(光标后退,不回删) 单引号单引号(撇号撇号)字符字符 “ 双引号字符双引号字符 r 回车(到回车(到当前行当前行行首)行首)ddd 1到到3位位8进制数所代表的字符

10、进制数所代表的字符 f 走纸换页走纸换页xhh 1到到2位位16进制数(进制数(ASCII码)所代表的字符码)所代表的字符printf(“abcr12n”);printf(“x41x42n”);输出:输出:12c AB注意:在计算字符串有多注意:在计算字符串有多少个字符时,少个字符时,一个转义字一个转义字符算一个符算一个2.2 数据常量数据常量例例1:main( ) char c1,c2; /*定义字符变量定义字符变量c1,c2*/ c1=a;c2=b;* /*给变量给变量c1,c2赋值赋值*/ c1=c1-32;c2=c2-32;* /*字符变量参与算术运算字符变量参与算术运算*/ prin

11、tf(“%c %c”,c1,c2); /*以字符格式输出变量以字符格式输出变量*/ 说明:说明:* 字符字符a,b的的ASCII码值分别为码值分别为97、98,所,所以变以变 量量c1,c2所占的内存单元中存放的是所占的内存单元中存放的是97和和98两个数,两个数, 即:即:c1: c2: 989701100001011000102.2 数据常量数据常量例例2:main( ) /ASCII码码字符的整数形式字符的整数形式 int i; char c; i=a; c=97; printf(“%c,%dn”,c,c); printf(“%c,%dn”,i,i); 说明:说明:* 字符数据与整型数据

12、可以互相赋值;字符数据与整型数据可以互相赋值; *字符数据可以以字符形式输出,也可以用整数字符数据可以以字符形式输出,也可以用整数 形式输出。(形式输出。(转换,符号扩展,截断转换,符号扩展,截断) 00000000 01100001970110000197ic2.2 数据常量数据常量四四.字符串常量字符串常量一对用一对用双引号双引号括起来的字符序列。括起来的字符序列。如:如:“a” “hello” “CHINA” “1111233”1)字符串常量在内存中按字符串的每个字符的)字符串常量在内存中按字符串的每个字符的ASCII码存放,最后码存放,最后 会自动在其末尾增加一个会自动在其末尾增加一个

13、零结束符零结束符(用(用0表示,表示,ASCII 值为值为0),表),表示字符串的结束。示字符串的结束。如:如:字符串字符串“hello”在内存中存储为(占内存单元数在内存中存储为(占内存单元数为串字符个数为串字符个数+1):): h e l l o 02.2 数据常量数据常量四四.字符串常量字符串常量2) 字符常量字符常量和和字符串常量字符串常量在表现形式和存储性质上在表现形式和存储性质上 是不同的。(是不同的。(单、双引号;零结束符单、双引号;零结束符)例:字符例:字符a : 占用占用1个字节空间个字节空间 字符串字符串“a” : 占用占用2个字节空间个字节空间 空串空串“”“” : 占用

14、占用1个字节空间个字节空间3)字符串中也支持转义字符)字符串中也支持转义字符变量变量变量:在程序运行过程中其值是可以改变的变量:在程序运行过程中其值是可以改变的变量定义变量定义 int a; /*指定指定a为整型变量为整型变量*/ long m,n; float f; /*指定指定f为实型变量为实型变量*/ double x,y; char c; /*指定指定c为字符型变量为字符型变量*/常量与变量常量与变量六六. 变量赋初值(变量初始化)变量赋初值(变量初始化)变量在使用前必须变量在使用前必须定义定义,且应该,且应该初始化初始化:1.在定义变量同时使变量初始化:在定义变量同时使变量初始化:

15、如:如:int a=3; /*指定指定a为整型变量,初值为为整型变量,初值为3*/ float f=3.56; /*指定指定f为实型变量,初值为为实型变量,初值为3.56*/ char c=a; /*指定指定c为字符型变量,初值为为字符型变量,初值为a*/2.可以使定义的一部分变量赋初值:可以使定义的一部分变量赋初值: 如:如: int a,b,c=5;3.如果对几个变量赋以同一个初值,不能写成:如果对几个变量赋以同一个初值,不能写成: int a=b=c=5; 而要写成:而要写成: int a=5,b=5,c=5; 或或int a,b,c;a=b=c=5;变量未定义变量未定义常量与变量常量与

16、变量七七. 数据类型的溢出和截断数据类型的溢出和截断溢出:运算结果超出表示范围溢出:运算结果超出表示范围截断:大的数据类型付给小的数据类型截断:大的数据类型付给小的数据类型#includevoid main()short a;int x;a=32760;/a表示数分为表示数分为-32768+32767printf(“%hdn”,a); /%hd表示短整型表示短整型a=a+10; /a溢出溢出printf(%hdn,a);x=32770;a=x; /大赋小,截断大赋小,截断printf(%hd,%dn,a,x);宏定义与符号常量宏定义与符号常量一一. 宏定义宏定义n宏分为宏分为无参宏无参宏和和有

17、参宏有参宏两种两种n定义格式:定义格式:#define 标识符标识符 语言符号字符串语言符号字符串n说明:说明:(1)宏名一般用大写字母表示,以示与变量区别。)宏名一般用大写字母表示,以示与变量区别。(2)宏定义不是语句,所以不能在行尾加分号。)宏定义不是语句,所以不能在行尾加分号。(3)在宏展开时,预处理程序仅以按宏定义简单替换宏名,而不)在宏展开时,预处理程序仅以按宏定义简单替换宏名,而不作任何检查。作任何检查。(4)宏定义命令)宏定义命令#define应放在文件开头处,且在函数的外部。应放在文件开头处,且在函数的外部。(5)在进行宏定义时,可以引用已定义的宏名)在进行宏定义时,可以引用已

18、定义的宏名 。(6)对双引号括起来的字符串内的字符,不进行宏展开。)对双引号括起来的字符串内的字符,不进行宏展开。 (7)当)当“语言符号字符串语言符号字符串”为一个常量时,称标识符为为一个常量时,称标识符为“符号常符号常量量”(8)可用)可用#undef预处理命令终止宏的作用范围。预处理命令终止宏的作用范围。宏定义与符号常量宏定义与符号常量二二. 例子例子#include #define PI 3.1415926#define S(r) PI*r*rvoid main()float area,r;r=10;area = S(r);printf(area=%fn,area);/*#undef

19、PIfloat PI;PI=333;*/2.5 一维数组的基本概念一维数组的基本概念 n整型、实型、字符型都是基本数据类型,每个变量只能存储一个数据。 n要保存100个学生的分数,使用数组一维数组定义一维数组定义的一般格式如下:的一般格式如下:类型说明符类型说明符 数组名数组名数组长度数组长度;例如:例如:int a5; 定义了一个整型数组定义了一个整型数组a,它包含,它包含5个数组元素。个数组元素。需要注意的是:数组元素的需要注意的是:数组元素的下标从下标从0开始开始,并,并且所有元素在内存中连续存放。因此,数组且所有元素在内存中连续存放。因此,数组a的的5个个元素在内存中的存储形式如图元素

20、在内存中的存储形式如图2-3所示。所示。【例例2-3】定义一个保存学生分数的数组定义一个保存学生分数的数组score5,然后将,然后将50、60、70、80、90分别赋给数组的分别赋给数组的5个元素,接着从键盘输入一个数组下标号,输出该下标对应个元素,接着从键盘输入一个数组下标号,输出该下标对应的学生分数。的学生分数。 #include #include void main()void main() int score5,i; int score5,i; score0=50;score0=50;score1=60;score1=60;score2=70;score2=70;score3=80;

21、score3=80;score4=90;score4=90;printf(printf(请输入数组下标号:请输入数组下标号:););scanf(%d,&i);scanf(%d,&i);printf(printf(该学生的分数为:该学生的分数为:%dn,scorei);%dn,scorei); 【例例2-4】从键盘输入一个学生的从键盘输入一个学生的学号后,在屏幕上输出该学号。学号后,在屏幕上输出该学号。 #include void main() char num15;/定义学生学号scanf(%s,num);/输入学生学号printf(“该学生的学号为:%sn”,num); /输出 2.6 结构

22、体类型结构体类型 n在学生信息管理系统中,学生信息中的学号、姓名、年龄等项目不是一个个孤立的数据,而是相互联系的一个整体,那么在编程时如何体现出它们之间的联系呢? 2.6.1 结构体类型的定义结构体类型的定义 在定义结构体变量之前,先要定义结构体类型,结构在定义结构体变量之前,先要定义结构体类型,结构体类型的定义格式如下:体类型的定义格式如下:struct 结构体名结构体名类型说明符类型说明符 成员名成员名1;类型说明符类型说明符 成员名成员名2;类型说明符类型说明符 成员名成员名n;例如,表示学生信息的结构体例如,表示学生信息的结构体类型定义如下:类型定义如下:struct stu_type

23、struct stu_type char num15; /char num15; /学号学号char name10; /char name10; /姓名姓名int age; /int age; /年龄年龄;2.6.2 结构体变量的定义和引用结构体变量的定义和引用1. 结构体变量的定义结构体变量的定义结构体类型只是一种数据类型,类似于int,它本身不能保存数据,但是可以用它来定义变量,然后将数据保存到结构体变量中。结构体变量的定义格式如下:struct 结构体名结构体名 变量列表;变量列表;例如,定义三个学生结构体变量,方法如下:struct stu_type stu1,stu2,stu3;上面

24、的定义类似于我们用整型int定义三个整型变量,如:int i,j,k;2. 结构体变量的引用结构体变量的引用有了结构体变量,我们就可以使用其成员,引用格式有了结构体变量,我们就可以使用其成员,引用格式如下:如下:结构体变量名结构体变量名.成员名成员名例如:例如:stu1.c表示第表示第1个学生的个学生的C语言成绩。如果要从键盘语言成绩。如果要从键盘输入第一个学生的输入第一个学生的C语言成绩,加语言成绩,加10分后输出该成绩,可分后输出该成绩,可采用以下语句:采用以下语句:scanf(“%d”,&stu1.c);stu1.c= stu1.c+10;printf(“%d”,stu1.c);可以看出

25、:结构体成员可以看出:结构体成员stu1.c的使用方法和一般变量的使用方法和一般变量的使用方法相同。的使用方法相同。【例例2-5】从键盘输入一个学生的学号、姓名、从键盘输入一个学生的学号、姓名、年龄、各科分数,求总分和平均分后,在屏年龄、各科分数,求总分和平均分后,在屏幕上输出他的所有信息。幕上输出他的所有信息。 #include void main() struct stu_typechar num15; char name10; int age; int c; int math; int en; int sum; float ave; ;struct stu_type stu1;print

26、f(请输入学号:);scanf(%s,stu1.num);printf(请输入姓名:);scanf(%s,);printf(请输入年龄:);scanf(%d,&stu1.age);printf(请输入C语言成绩:);scanf(%d,&stu1.c);printf(请输入数学成绩:);scanf(%d,&stu1.math);printf(请输入英语成绩:);scanf(%d,&stu1.en);stu1.sum=stu1.c+stu1.math+stu1.en;stu1.ave=stu1.sum/3.0;printf(学生学号t姓名t年龄tC语言t数学t英语t总分t平均分n

27、);printf(%-16s%st%dt%dt%dt%dt%dt%5.1fn,stu1.num,,stu1.age,stu1.c,stu1.math,stu1.en,stu1.sum,stu1.ave); 2.3 2.3 数据类型转换数据类型转换1.显式转换(强制类型转换) 格式:(类型标识符)表达式例:(int)3.5+3.42.隐式转换:n赋值: int x;x=3.2;n函数参数传递和函数值返回:n输出:printf()n表达式计算:可能出现舍入误差可能出现舍入误差或截断误差或截断误差注意有符号数和无符注意有符号数和无符号数之间的转换号数之间的转换运算符与表达式运算符与

28、表达式一一. C语言的运算符(语言的运算符(本章介绍本章介绍内容内容)1)算术运算符算术运算符 +、-、*、/、%、+ 、-(自增、自减)(自增、自减) 2)赋值运算符赋值运算符 = +=、-=、*=、/=、%=、=(复合运算符)(复合运算符)3)强制类型转换运算符强制类型转换运算符 (类型)(类型) 如:如:(int) (float)等等4)逗号运算符逗号运算符 , 运算符与表达式运算符与表达式二二.算术运算符和算术表达式算术运算符和算术表达式1. 基本基本算术运算符(算术运算符(+、-、*、/、%等)等)1)加或正值算术运算符:加或正值算术运算符:+ 功能:实现整型、实型和字符型等数据的加

29、法或取正功能:实现整型、实型和字符型等数据的加法或取正运算。运算。举例:举例:3+2、+5、3.5+2、3+a等等2)减或负值算术运算符:减或负值算术运算符:-功能:实现整型、实型和字符型等数据的减法或取负功能:实现整型、实型和字符型等数据的减法或取负运算。运算。举例:举例:3-2、-5、3.5-2、a-97等等3)乘法运算符:乘法运算符:* 运算符与表达式运算符与表达式二二.算术运算符和算术表达式算术运算符和算术表达式1. 基本基本算术运算符算术运算符4)除法运算符:除法运算符:/说明说明:I)两个整数相除时,“向零取整”(直接去掉小数部分),结果为整数,如3/2=1、-3/2=-1等;II

30、)如果参与运算的两个数中有一个实数,则结果为Double型,如3.5/2=1.7500000。5)模模(余数余数)算术运算符(算术运算符(%) 功能:求两个整型数相除的余数,结果为整型数。功能:求两个整型数相除的余数,结果为整型数。举例:举例:11%3等说明:说明:模运算符(%) 两侧只能为整数,必要时类型强制转换。如:(int)11.5%3,(结果为2) 。 运算符与表达式运算符与表达式二二.算术运算符和算术表达式算术运算符和算术表达式3.自增、自减运算符自增、自减运算符 (+、-)格式格式: 前加(前加(+ j)、)、后加后加 (j+) 前减前减 (-j)、)、后减(后减(j-)功能功能:

31、 使变量(使变量(j)的值增的值增1或减或减1。区别区别: 前加(减)前加(减)先对变量先对变量 j的值加(减)的值加(减)1,然后再使用,然后再使用 j的值;的值;后加(减)后加(减)先使用先使用 j的值,然后再使的值,然后再使 j的值加(减)的值加(减)1。(先加再用,先用再加先加再用,先用再加)举例举例: 假设假设 j=3,则执行则执行 k=j+;后,后,k=3, j=4。 而假设而假设 j=3,则执行则执行 k=+j;后,后,k=4, j=4。说明说明:1)自增、自减运算符只能用于)自增、自减运算符只能用于变量变量,不能用于,不能用于常量和表常量和表达式达式;如;如5+和(和(x+5)

32、+均是错误的。均是错误的。运算符与表达式运算符与表达式二二.算术运算符和算术表达式算术运算符和算术表达式3.自增、自减运算符自增、自减运算符 (+、-)说明:说明: 2)自增、自减运算符的结合方向是)自增、自减运算符的结合方向是“自右至左自右至左”不同优先级,按优先不同优先级,按优先级计算;优先级相同,从右到左计算级计算;优先级相同,从右到左计算;如:如: k=-j+;优先级相同相当于执优先级相同相当于执行了行了k=-(j+) 3)其他:如假设)其他:如假设j=3;则执行则执行 k=(j+)+(j+)+(j+);结果为结果为k=9,j=6。先使用先使用而执行而执行 k=(+j)+(+j)+(+

33、j); 结果为结果为k=18,j=6。先加先加1一个一个表达式中的变量,只有一个值表达式中的变量,只有一个值运算符与表达式运算符与表达式二二.算术运算符和算术表达式算术运算符和算术表达式4.强制类型转换运算符(强制类型转换运算符(比算术运算符级别高比算术运算符级别高,原变量类型不变),原变量类型不变)格式:格式:(类型)(表达式) 此处“类型”为int、float、double等功能:功能:将表达式的数据类型强制转换为指定的类型。举例:举例: (int)(5.3+5) (强制转换为整型) (float)(x+y) (强制转换为浮点类型,括号 不能省)运算符与表达式运算符与表达式二二.算术运算符

34、和算术表达式算术运算符和算术表达式5.算术表达式算术表达式定义:定义:用算术运算符和括号将运算对象(也称操作数,包括各种类型的常量、变量和函数)连接起来的、符合C语言语法规则的式子称为C语言的算术表达式。举例:举例:3、 3+x*5/2+sin(y)、 3+2 、 (3-x)*2-3运算符与表达式运算符与表达式二二.算术运算符和算术表达式算术运算符和算术表达式6.运算符优先级和运算符优先级和结合性:见附录结合性:见附录优先级高,先运算;优先级相同,结合性即运算顺序优先级高,先运算;优先级相同,结合性即运算顺序1)优先级()优先级(为保证不出错,可加上必要的小括号为保证不出错,可加上必要的小括号

35、)单目运算符单目运算符(+,-,+,-,(类型),(类型) 高高 自右至左自右至左算术运算算术运算(先(先*,/,%,再,再+,-)关系运算符关系运算符逻辑运算符逻辑运算符条件运算符条件运算符赋值运算符赋值运算符 自右至左自右至左逗号运算符逗号运算符 低低运算符与表达式运算符与表达式三三.赋值运算符和赋值表达式赋值运算符和赋值表达式1.基本赋值基本赋值运算符运算符 1)概念概念:基本的赋值运算符指的是赋值符号 “=” 2)功能:功能:将赋值运算符(等号)右边的值赋给左边的变量。 3)举例举例: x=5; /* 将数值5赋给变量x */ y=2+3*4 /* 将右边表达式的值14赋给变量y */运算符与表达式运算符与表达式三三.赋值运算符和赋值表达式赋值运算符和赋值表达式1.基本赋值基本赋值运算符运算符 4)说明说明(转换功能说明转换

温馨提示

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

评论

0/150

提交评论