




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二讲第二讲 数据类型、运算符与表达式数据类型、运算符与表达式数组类型数组类型数据类型数据类型构造类型构造类型空类型空类型指针类型指针类型双精度双精度单精度单精度实型(浮点型)实型(浮点型)字符型字符型枚举类型枚举类型基本类型基本类型整型整型结构体类型结构体类型共用体类型共用体类型1.4 C 语言的基本数据类型语言的基本数据类型表表2.1 Turbo C所支持的基本数据类型所支持的基本数据类型n关键字关键字所占位数所占位数取值范围取值范围精度(位)精度(位)char8-127127signed char8-127127unsigned char80255int16-3276832767unsi
2、gned int16065535signed int16同同intunsigned short int16同同intsigned short int16同同short intlong int 32-21474836482147483647unsigned long int3204294967295float32-3.410-38+3.410387double64-1.710-308+3.41030815long double80-3.410-4932+3.4104932表表2.2 基本数据类型的修饰符基本数据类型的修饰符 修饰符修饰符含义含义signed带符号修饰符带符号修饰符unsigned
3、无符号修饰符无符号修饰符long长型修饰符长型修饰符short短型修饰符短型修饰符1.5 常量与变量常量与变量1.5.1常量和符号常量常量和符号常量 在程序运行过程中,其值保持不变的量。在程序运行过程中,其值保持不变的量。 如:如:1,0,123 为整型常量为整型常量 4.6, 1.23 为实型常量为实型常量 a, d 为字符常量为字符常量 从其字面形式即可判别的常量称为字面常量或直接常量从其字面形式即可判别的常量称为字面常量或直接常量用一个标识符代表一个常量的称为用一个标识符代表一个常量的称为符号常量符号常量#define PRICE 30main() int num,total; num=
4、10; total=num*PRICE; printf(“total = %d “,total);1.5.2 直接常量的书写格式直接常量的书写格式 1、整型常量三种表达形式:、整型常量三种表达形式: (1) (1) 十进制形式十进制形式: :与数学上的整数表示相同;与数学上的整数表示相同; 例如例如: 12, -100, 0: 12, -100, 0 (2) (2) 八进制形式八进制形式: :在数码在数码前加数字前加数字0 0; 例如例如: 012=1: 012=1* *8 81 1+2+2* *8 80 0=10(=10(十进制)十进制) (3) (3) 十六进制形式十六进制形式: :在在数
5、码前加数码前加0X0X(数字数字0和字母和字母X)。)。 例如例如: 0 x12=1: 0 x12=1* *16161 1+2+2* *16160 0=18(=18(十进制)十进制) 根据数据的数值的大小,分配相应的内存空间。根据数据的数值的大小,分配相应的内存空间。注意:注意:不合法常量不合法常量p182、实型常量、实型常量 实型数又称浮点数。它有两种表现形式实型数又称浮点数。它有两种表现形式: (1)十进制形式十进制形式(必须包含小数点)。必须包含小数点)。 如:如:0.123 、.123 、123.0 、123. 、0.0 都是合法的都是合法的十进制数表示。十进制数表示。 (2)指数形式
6、(用指数形式(用xex来表示十的幂次方来表示十的幂次方) 如:如:123e3 或或 123E3 或或 12.3E4 都表示都表示123103。注意:注意:不合法常量不合法常量p183、字符型常量、字符型常量字符类型的数据即指字符型数据,它可分为字符和字字符类型的数据即指字符型数据,它可分为字符和字符串两种。符串两种。 用用单引号单引号括起来的括起来的单个单个字符:字符: 如如 a, x, D, # 。 字符类型数据在内存中以相应的字符类型数据在内存中以相应的ASCII码存放码存放(附录附录A)而是而是01100001main() main()main() main() char char ch
7、ch; char ; char chch=A; =A; intint i; i; chch=a; =a; chch=ch+32; i=ch+32; i=chch; ; printf(printf(“%d%d”,ch ); ); printf(printf(“%d,%c%d,%c”,ch,i);); a a97,a97,a4、字符串常量、字符串常量 用用双引号双引号括起来的字符序列。如:括起来的字符序列。如: “How do you do”, “CHINA”, “a”, “$ 123.34” 等等 字符串可以一次输出如:字符串可以一次输出如: printf(“How do you do”); 注
8、意注意 a是字符常量,是字符常量,“a”是字符串常量,二是字符串常量,二者不同。者不同。5、 转义字符转义字符 C语言规定:语言规定:n用反斜杠开头(反斜杠开头()引导的一个字符或一个数字序列也可表示字符量。反斜杠引导的字符称转义字符。n用反斜杠开头后面跟一个字母代表一个控制字符。n用用代表字符代表字符“”,用代表撇号字符。n用后跟1到3个八进制数代表ASCII码为八进制数的字符;后跟12个十六进制书代表ASCII码为十六进制数的字符。例如:101或x41表示字符常量A。常用的以常用的以开头的特殊字符如表开头的特殊字符如表2.3所示。所示。字符形式字符形式功功 能能n换行换行t横向跳格(跳到下
9、一个输出区)横向跳格(跳到下一个输出区)v竖向跳格竖向跳格b退格退格r回车回车f走纸换页走纸换页反斜杠字符反斜杠字符单引号字符单引号字符双引号字符双引号字符a报警报警0空值空值ddd1到到3位位8进制数所代表的字符进制数所代表的字符xhh1到到2位位16进制数所代表的字符进制数所代表的字符1.5.3 变量变量 在程序运行过程中其值可以改变的量。在程序运行过程中其值可以改变的量。 #define PRICE 30main() int num,total1,total2; num=10; total1=num*PRICE; num=20; total2=num*PRICE; printf(“tot
10、al1 = %d total2 = %d “,total1,total2);变量有自己的名字,一个变量对应一定的内存存储变量有自己的名字,一个变量对应一定的内存存储单元。单元。p21例如例如 num=10 numnum变量值变量值 变量名变量名 1010存储单元地址存储单元地址10011001 num=20 num 所对应的内存单元的内容不再是所对应的内存单元的内容不再是10而是而是20。变量名变量名 由字母、数字、下划线组成由字母、数字、下划线组成,不能用保留字,不能,不能用保留字,不能数字开头数字开头 习惯上用小写字母表示,而且尽量习惯上用小写字母表示,而且尽量“见名知意见名知意”1。变量
11、必须先定义后使用变量必须先定义后使用2。变量定义语句形式 类型标识符类型标识符 变量名变量名1 , 变量名变量名2 , 变量名变量名3 . ;3。变量赋初值 int num=10;1、整型变量、整型变量(4种)种) 基本型:以基本型:以int表示表示 短整型:以短整型:以short表示表示 长整型:以长整型:以long 表示表示 无符号型:只能存放正整数,它的表示是在无符号型:只能存放正整数,它的表示是在上述三种类型之前加上上述三种类型之前加上unsigned, 如:如: 例如例如 int sum,long distance, unsigned x,y;每种类型所占内存空间和表示的数的范围每种
12、类型所占内存空间和表示的数的范围类型类型 类型标识符类型标识符 数值范围数值范围 占用字节数占用字节数基本型基本型 Int -3276832767即即-215(215-1) 2短整型短整型 short int -3276832767即即-215(215-1) 2长整型长整型 long int 231(231-1) 4无符号整型无符号整型 unsigned int 065535即即0216-1 2无符号短整型无符号短整型 unsigned short 065535即即0216-1 2无符号长整型无符号长整型 unsigned long 0(232-1) 4 例例2.12.1main()main(
13、) intint a,b,c,da,b,c,d; ; unsigned u; unsigned u; a = 12; b = a = 12; b =24; u =10; c = 24; u =10; c = a+ua+u; d = ; d = b+ub+u; ; printf(printf(“a a + u = %d, b + u = % + u = %d, b + u = % dndn”, c, d); , c, d); -24-24c12+1012+1012121010a au ua+ua+u = 22, = 22, b+ub+u = =14142222b2、实型变量、实型变量 C语言的实
14、型变量分为单精度和双精度两种。语言的实型变量分为单精度和双精度两种。 (1)单精度占)单精度占4字节,提供字节,提供7位有效数字,表位有效数字,表示数的范围为示数的范围为10381038。 (2)双精度占)双精度占8字节,提供字节,提供1516位有效数位有效数字,范围为字,范围为1030810308。实型变量的定义实型变量的定义 用用float表示单精度,表示单精度,double表示双精度表示双精度 如:如:float x,y; double z;9897c1c23、字符变量、字符变量 一个字符变量只能存放一个字符变量只能存放一个一个字符。它的定义字符。它的定义形式如下:形式如下:char c
15、1,c2; 字符变量的赋值形式如下:字符变量的赋值形式如下: c1= a; c2= b;c3=101; 一个字符占一个字节。一个字符占一个字节。 字符数据的存储形式字符数据的存储形式 在内存中字符变量的存储形式是在内存中字符变量的存储形式是ASCII码。码。1.6 运算符与表达式运算符与表达式C运算符算术运算符:(+ - * / % + -)关系运算符:( = !=)逻辑运算符:(! & |)位运算符 :( | &)赋值运算符:(= 及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(* &)求字节数 :(sizeof)强制类型转换:(类型)分量运算符:(.
16、-)下标运算符:()其它 :(( ) -)1、运算符、运算符 基本的算术运算基本的算术运算 、 、*、 (除)(除) 、% (取余)(取余) % 是模运算,既求余运算,要求整数。是模运算,既求余运算,要求整数。 如如7%4的结果是的结果是3。 说明:说明: 5/3的结果仍是整数,小数部分被忽略。的结果仍是整数,小数部分被忽略。 5.3/3或或5/3.0的结果为的结果为double型。型。2、表达式、表达式 用算术运算符将运算对象按用算术运算符将运算对象按C的语法规则连接起来的式的语法规则连接起来的式子叫算术表达式。子叫算术表达式。 例如:例如:a * b/c1.5+a1.6.1算术运算符和算术
17、表达式算术运算符和算术表达式3、优先级(算术运算):、优先级(算术运算): ()() * / % + 在同一级别中,采取由左至右的结合方向。如:在同一级别中,采取由左至右的结合方向。如:a-b+c相当于相当于(a-b)+c显示优先级:4、自增、自减运算符、自增、自减运算符:使变量的值加使变量的值加1或减或减1。p25 如:如:i, i 在使用在使用i 之前,先使之前,先使i的值加(减)的值加(减)1 i, i 在使用在使用i之后,再使之后,再使i的值加(减)的值加(减) 1 例如:例如:i的值为的值为3,则,则 j= + + i; j的值为的值为4,i的值为的值为4 j= i + +; j的值
18、为的值为3,i的值为的值为4 又如:又如: printf(“%d”, +i); 输出结果为输出结果为4 printf(“%d”, i+); 输出结果为输出结果为3i 最终都是最终都是4注意:注意:()和()只能用于变量()和()只能用于变量 优先级高于算术运算,与负值()同级优先级高于算术运算,与负值()同级+ 举例举例设i=3;则1、计算(i+)+(i+)+(i+)表达式的值为:9,计算完后i为6。分析:分析:因为括号()等功能3个(i+)是同时取值的,这是个后缀式,故每个式子的值3则表达式为9;然后再将i自加3次为6。2、printf(“k=%d,i=%d”,(i+)+(i+)+(i+),
19、i)语句的输出结果为?K=12,i=3;注意注意i是为3,不是6,分析:分析:因为printf语句它是自右向左输出值,另外,printf语句对表达式(i+)+(i+)+(i+)是自左向右计算取值,故第1个(i+)的值为3,i加后为4;第2个为4, ,i加后为5 ;第3个为5, ,i加后为6 。如果在后面加上如果在后面加上printf(“%d”,i);则结果i为6.+ 举例举例设i=3;则3、计算(+i)+(+i)+(+i)表达式的值为:18,计算完后i为6。分析:分析:因为括号()等功能3个(+i)是同时取值的,这是个前缀式,i先加1,则3个式子每个加1之后i为6故每个式子的值6则表达式为18
20、。4、printf(“k=%d,i=%d”,(+i)+(+i)+(+i),i)语句的输出结果为?K=15,i=3;注意注意k是为15,不是18,分析:分析:因为printf语句对表达式(+i)+(+i)+(+i)是自左向右计算取值,故第1个(+i)的值为4,i加后为4;第2个(+i)的值为5, ,i加后为5 ;第3个(+i)的值为6,故最后表达式为4+5+6,语句运行完后i为6 。总结:对于表达式为括号同时取值;对于总结:对于表达式为括号同时取值;对于printf语语句是自左向右计算取值。句是自左向右计算取值。n第一次作业:第一次作业:n1、设设 x=5; 计算表达式的值计算表达式的值n(1)
21、 +x * -x n(2) x+ * -xn2、给出下列表达式的结果给出下列表达式的结果n(1) 5/3 (2) 5.0/3 (3) 5%3 (4) 5.0%3n(5) x + a / 2* c d1.6.2 赋值运算符和赋值表达式赋值运算符和赋值表达式v简单赋值运算符简单赋值运算符l符号:符号: = =l格式:格式: 变量标识符变量标识符= =表达式表达式l作用:将一个数据(常量或表达式)赋给一个变量作用:将一个数据(常量或表达式)赋给一个变量v复合赋值运算符复合赋值运算符l种类种类:+= -= += -= * *= /= %= /= %= = = = &= = |= &=
22、= |=l含义:含义: exp1 op= exp2exp1 op= exp2 exp1 = exp1 = exp1exp1 op exp2 op exp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3练习:练习:int a=12;求下列复合运算的结果求下列复合运算的结果a aa aa a * * a ( a (设设a a为为12)12)a aa a(a a * * a a) (a (a为为12-12 12-12 * * 12=-132) 12=-132)a a-132-132a a a a(-132)(-132)a a-264-264n第一次作业:第一次作业:n3、设设 x
23、=5; 计算表达式的值计算表达式的值n(1) x+=x*=6 n(2) x=x-=x/=21.6.3 1.6.3 逗号运算符和表达式逗号运算符和表达式v形式:形式:表达式表达式1 1, ,表达式表达式2 2, ,表达式表达式n nv结合性结合性: :从左向右从左向右v逗号表达式逗号表达式的值:等于表达式的值:等于表达式n n的值的值v用途:用途:常用于循环常用于循环forfor语句中语句中例 a=3*5,a*4 a=3*5,a*4,a+5例 x=(a=3,6*3) x=a=3,6*a例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%
24、d”,(a,b,c),b,c); /a=15,表达式值60/a=15,表达式值20/赋值表达式,表达式值18,x=18/逗号表达式,表达式值18,x=3/1,2,3/3,2,3n关系运算实际上是两个量的比较,比较的结果只有关系运算实际上是两个量的比较,比较的结果只有两种可能:真、假两种可能:真、假n例如例如 a 3 ? n当当a=5时,比较的结果为真,时,比较的结果为真,n当当a=1时,结果为假。时,结果为假。n有六种关系运算符有六种关系运算符 n( , ,=, ,=,)()( =, !=, !=)n关于优先次序关于优先次序n,=,=为同一级别,为同一级别, =和和!=!=为同一级别为同一级别
25、. .n在同一级别中在同一级别中,采取由左至右的结合方向采取由左至右的结合方向.算术运算符算术运算符关系运算符关系运算符赋值运算符赋值运算符高高低低1.6.2 1.6.2 关系运算、逻辑运算关系运算、逻辑运算高低1 1、关系运算符和关系表达式、关系运算符和关系表达式n例例:ncca+ba+b c( c(a+ba+b) )nab!=c (ab)!=cab!=c (ab)!=cna=bc a = = (bc)a=bc a = = (bc a = (bc) a=bc a = (bc) (赋值运算级别最低)(赋值运算级别最低)n关系表达式关系表达式n用关系运算符将两个用关系运算符将两个表达式表达式连接
26、起来连接起来,叫关系表叫关系表达式。达式。n合法的关系表达式:合法的关系表达式:nab, ab, a+ba+b b+cb+c, (a=3)(b=5),(a=3)(b=5), , (a=3)(b=5),(a=3)(b=5), a a b)(bb)(b=0的值为真(在计算机中记为的值为真(在计算机中记为1)。)。n例:例:na=3,b=2,c=1,则则: nab的值为的值为1n(ab)=c的值为真(即的值为真(即1)nab的值为的值为1,c也为也为1,n(ab)=c相当于相当于1=1,结果为真,即,结果为真,即(ab=c)的值的值为为1。nb+cb中中d的值为的值为ab的值,为。的值,为。nf=a
27、bc中的值为中的值为c的值,为。的值,为。2 2 、逻辑运算符和逻辑表达式、逻辑运算符和逻辑表达式n逻辑运算逻辑运算-产生真假值的运算产生真假值的运算n逻辑运算符逻辑运算符n&逻辑与逻辑与n| 逻辑或逻辑或n!逻辑非!逻辑非n“&”和和“|”是双目运算符,它要求两个运是双目运算符,它要求两个运算量。算量。n如:如:(ab) & (xy), (ab)|(xy)。n“!”是一元运算符,只要求一个运算量。是一元运算符,只要求一个运算量。如:如:!(ab)n逻辑运算举例如下:逻辑运算举例如下:na & b a,b同时为真,则表达式为真同时为真,则表达式为真na | b
28、a,b只要有一个为真,表达式为真只要有一个为真,表达式为真n!a a为真,则表达式为假为真,则表达式为假n真值表真值表a b !a !b a & b a | ba b !a !b a & b a | bT T T F F T T T F F T TT F F T F TT F F T F TF T T F F TF T T F F TF F T T F F F F T T F F n逻辑运算符的优先级逻辑运算符的优先级n! & |n逻辑运算符逻辑运算符 “&” 和和 “|” 低于关系运算符,低于关系运算符,“!”高于算术运算符高于算术运算符nab & x
29、y 相当于相当于: (ab) & (xy)na=b|x=y 相当于相当于: (a=b) | (x=y)n!a | ab 相当于相当于: (!a ) | (ab)! ! 算术算术 关系关系 逻辑逻辑 赋值赋值n逻辑表达式逻辑表达式n用逻辑运算符将关系表达式或逻辑量连接起来就用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。是逻辑表达式。n在在C语言中,当判断一个量的真假时,一切非数语言中,当判断一个量的真假时,一切非数均被当成均被当成真真来处理。例如:来处理。例如:n若若a=4,!a的值为的值为n若若a=4, b=5, n则则a & b的值为的值为n则则a | b的值为的值为n则则!a | b的值为的值为n4 & 0|2 的值为的值为n逻辑运算的结果逻辑运算的结果非即非即,参加逻辑运算的量可以是和非,参加逻辑运算的量可以是和非数。数。n区分下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 19158-2025集装及站用压缩氢气铝内胆碳纤维全缠绕气瓶
- 足球场、体育场可行性研究报告
- 防汛知识培训评价课件
- 无抵押房屋租赁协议书7篇
- 投诉调解协议书5篇
- 黑龙江省大庆市2025-2026学年高三上学期第一次月考历史试卷
- 部队安全保卫知识培训课件
- 2024-2025学年辽宁省朝阳市龙城区北师大版五年级下册期末测试数学试卷(含部分答案)
- 边防军人血性的课件
- 边塞诗歌三首课件
- 农业产业链风险管理
- 专题02 文言文概括分析与概述(教案)-2022年高考语文一轮复习之文言文阅读概括分析与概述宝鉴
- 血管活性药物静脉输注护理
- JT-T-807-2011汽车驾驶节能操作规范
- 人工智能创新实验教程 课件 第15章 VGG16网络
- 2024年个人信用报告(个人简版)样本(带水印-可编辑)
- SYT 7653-2021 石油天然气钻采设备 耐蚀螺栓连接
- 一例CAG循证护理查房
- 安全生产投入台账(模板)
- 委托书办理压力容器使用登记证
- 粤绣行业发展前景分析报告
评论
0/150
提交评论