版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021/7/241教学内容:教学内容: 3.1 3.1 基本数据类型基本数据类型 3.2 3.2 常用运算符和表达式常用运算符和表达式 3.3 3.3 表达式及赋值语句表达式及赋值语句 3.4 3.4 基本输入输出操作的实现基本输入输出操作的实现 3.5 3.5 顺序结构程序设计应用实例顺序结构程序设计应用实例教学要求:教学要求: 1.1.掌握整型数据、实型数据、字符数据使用规则掌握整型数据、实型数据、字符数据使用规则 2.2.掌握各种数据运算的运算符的运算。掌握各种数据运算的运算符的运算。 3.3.掌握掌握scanfscanf和和printfprintf函数的使用。函数的使用。 4.4.掌
2、握编写顺序结构程序的基本方法。掌握编写顺序结构程序的基本方法。第第3 3章章 顺序结构程序设计顺序结构程序设计2021/7/242用用C语言编写的源程序如下:语言编写的源程序如下: main( )main( ) int a int a ,b b ,c ;c ; a=24; b=14; a=24; b=14; c=a+b; c=a+b; printf(“%d n”,c); printf(“%d n”,c); 程序运行结果程序运行结果:38该程序仅由一个该程序仅由一个main()主函构成。主函构成。2021/7/2433.13.1 基基 本本 数数 据据 类类 型型C语言提供的数据结构,是以数据类
3、型形式出现的。语言提供的数据结构,是以数据类型形式出现的。 一、数据类型分类一、数据类型分类 1. 基本类型基本类型 整型整型 、 实型(又称浮点型)、实型(又称浮点型)、 字符型字符型 、空类型空类型2. 构造类型构造类型 数组类型数组类型 、结构类型、结构类型 、共用类型、枚举型、共用类型、枚举型3. 指针类型指针类型C语言中的数据,有常量和变量之分,它们分别属于上述语言中的数据,有常量和变量之分,它们分别属于上述这些类型。这些类型。2021/7/244C数据类型数组类型数组类型结构体类型结构体类型共用体类型共用体类型枚举类型枚举类型指针类型指针类型构造类型构造类型2021/7/245 二
4、、二、基本数据类型基本数据类型 1.1.基本数据类型:基本数据类型: 整型整型 、实型(又称浮点型)、双精度实型、字符型、无、实型(又称浮点型)、双精度实型、字符型、无值型(空类型)。值型(空类型)。 2. 2. 基本数据类型的标识符:基本数据类型的标识符: intint、 floatfloat 、doubledouble、 charchar、 voidvoid 3. 3. 类型说明符类型说明符 除无值型以外的除无值型以外的4 4种基本数据类型可以带有说明前缀种基本数据类型可以带有说明前缀。 类型说明符有以下类型说明符有以下4 4种:种: (1 1) signedsigned (2 2)uns
5、igned unsigned (3 3) longlong (4 4)shortshort 例如例如 long int a,b;long int a,b;2021/7/246 三、常量和变量三、常量和变量 在在C C语言中,数据有常量和变量之分。语言中,数据有常量和变量之分。 1.常量的概念常量的概念 在程序运行过程在程序运行过程中,其值不能被改变的量称为常量。中,其值不能被改变的量称为常量。 常量的类型,可通过书写形式来判别。常量的类型,可通过书写形式来判别。 常量的分类:常量的分类: 表达形式:表达形式: (1 1)整型常量)整型常量 6 6、432432、7654376543、54678
6、3424 546783424 (2 2)实型常量)实型常量 2.232.23、546.2487615247546.2487615247、3.0574393.057439+5+5 (3 3)字符常量)字符常量 a a 、 + + 、 6 6 、 M M (4 4)符号常量)符号常量 WHIWHI #define #define WHIWHI I am a student. I am a student. WHI,PI WHI,PI 是符号常量是符号常量2021/7/247 例例3.1 输出输出整型常量整型常量 、字符常量的值、字符常量的值 main() printf( “ %dn”, 349 )
7、; printf( “ %dn”, -9 ); printf( “ %Cn”, M ); 运行结果:运行结果: 349 -9 M2021/7/248例例3.2 符号常量符号常量 PI 的使用。的使用。l以标识符来代表的常量l事先编译预处理命令define定义l编译时先由系统替换为它所代表的常量,再进行编译例如: 2021/7/249 例例3.3 符号常量符号常量 WHI 的使用。的使用。 #define WHI I am a student. main() printf( “I am a student. n” ); printf( %s n, “I am a student.” ); pri
8、ntf( %s n, WHI ); 运行结果:运行结果: I am a student. I am a student. I am a student. 格式控制字格式控制字符串符串中的普通中的普通字字符,符,照原样输出照原样输出2021/7/2410 2. 变量的概念变量的概念 在程序运行过程在程序运行过程中,其值可以被改变的量称为变量。变中,其值可以被改变的量称为变量。变量的三个要素:量的三个要素: (1)变量名。每个变量都必须有一个名称。)变量名。每个变量都必须有一个名称。 (2)变量值。在程序运行过程中,变量值存储在内存)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量
9、名来引用变量的值。中。在程序中,通过变量名来引用变量的值。 (3)变量的类型)变量的类型 例如:例如: int a=23; a (2 2个字节个字节)变量的类型变量的类型 int 变量名字:变量名字:a 变量的值:变量的值:23 在内存中存储单元占在内存中存储单元占16位位二进制数值二进制数值0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 12021/7/2411例例3.3 3.3 输出变量的数值。输出变量的数值。 main() int x, y; x=5; y=3; printf(“ %d- %dn”, x, y); x=1; y=2; printf(“ %d- %dn”, x,
10、 y); 运行结果运行结果: 5- 3 1- 2x、y是整型变量是整型变量每个变量分配每个变量分配2个字个字节存储单元节存储单元将数值将数值5、3分别存放到分别存放到x、y变量的变量的存储单元存储单元x、y变量的值变量的值重新赋值重新赋值2021/7/2412 3. 变量的定义变量的定义 在语言中,要求对所有用到的变量,必须先定在语言中,要求对所有用到的变量,必须先定 义、后使用。系统才可知道分配多大的存储空间。义、后使用。系统才可知道分配多大的存储空间。变量定义的一般格式:变量定义的一般格式: 存储类型存储类型 数据类型数据类型 变量名变量名, 变量名变量名2 ;例如例如: int a1,
11、a2, a3;例如例如: float b1, b2, b3; 2021/7/2413 4.标识符命名规则标识符命名规则语言中,用语言中,用标识符标识符来区分不同来区分不同文件、函数、文件、函数、变量变量。(1)标识符标识符有效字符:只能由有效字符:只能由字母字母、数字数字和和下划线下划线组成,且以字母或下划线开头。组成,且以字母或下划线开头。(2 2)标识符标识符有效长度:有效长度:TC V2.0TC V2.0标识符的有效标识符的有效长度为长度为个个字符。随系统而异,但至少前个字符有效。字符。随系统而异,但至少前个字符有效。如果超长,则超长部分被舍弃。如果超长,则超长部分被舍弃。例如例如stu
12、dent11student11和和student12student12的前个字符相同,有的的前个字符相同,有的系统认为这两个变量,是一回事而不加区别。系统认为这两个变量,是一回事而不加区别。(3 3)C C语言的关键字不能用作变量名。语言的关键字不能用作变量名。2021/7/2414 (4 4)标识符命名标识符命名通常应选择能表示数据含义的英文通常应选择能表示数据含义的英文单词(或缩写)作变量名,或汉语拼音字头作变量名。单词(或缩写)作变量名,或汉语拼音字头作变量名。通过变量名就知道变量值的含义通过变量名就知道变量值的含义, ,做到做到“见名知意见名知意”。 例如例如: name : name
13、 xm xm 姓名姓名 sex sex xb xb 性别性别 age age nl nl 年龄年龄 salary salary gz gz 工资工资 注意:注意:C C语言对英文字母的大小写敏感,即同一字母语言对英文字母的大小写敏感,即同一字母的大小写,被认为是两个不同的字符。变量名的大小写,被认为是两个不同的字符。变量名totaltotal与变与变量名量名TOTALTOTAL、ToTaLToTaL、totAltotAl等不是同一个变量等不是同一个变量 习惯上,变量名和函数名中的英文字母用小写,以习惯上,变量名和函数名中的英文字母用小写,以增加可读性。增加可读性。2021/7/24153.1.
14、1 3.1.1 整整 型型 数数 据据一、整型变量整型变量 1. 1. 整型变量分为类:整型变量分为类:(1)基本整型()基本整型(int)(2)短整型()短整型(short int)(3)长整型()长整型(long int)(4)无符号整型。无符号型又分为)无符号整型。无符号型又分为(3种): unsigned int unsigned short unsigned long 2021/7/2416二、整型变量占用内存字节数与值域二、整型变量占用内存字节数与值域 1.1.整型变量占用的内存字节数整型变量占用的内存字节数 在在1616位操作系统中占用位操作系统中占用: : int 型变量型变量
15、 占占 2个字节个字节 值域占值域占16位位 short 型变量型变量 占占 2字节字节 值域占值域占16位位 long 型变量型变量 占占 4字节字节 值域占值域占32位位 2.2.不同类型的整型变量值域不同类型的整型变量值域 占用内存位数为占用内存位数为 n n 的整型变量其值域:的整型变量其值域: 有符号为有符号为:-2n -1 ( ( 2n 1 -1) 无符号为:无符号为: 0 (2n -1)2021/7/2417 三、各种整型变量的值域范围各种整型变量的值域范围 int 型变量型变量 (值域为值域为16位位): -32768 32767 short int (值域为值域为16位位):
16、 -32768 32767 long int (值域为值域为32位位) : -2147483648 2147483647 unsigned int (值域为值域为16位位) : 0 65535 Unsigned short int (值域为值域为16位位) : 0 65535 Unsigned long int (值域为值域为32位位) : 0 4294967295 2021/7/2418整型数据类型类类型型符符号号关键字关键字所占所占位数位数数的表示范围数的表示范围整整型型有有(signed)int16-3276832767(signed)short16-3276832767(signed)
17、long32-21474836482147483647无无unsigned int16065535unsigned short16065535unsigned long32042949672952021/7/2419 4.整型常量(整常数)三种表示形式整型常量(整常数)三种表示形式(1 1)十进制十进制 例如:例如: 10 、36(2 2)八进制八进制(以(以数字数字 0 0 开头)开头) 例如:例如:012(十进制(十进制10)(3 3)十六进制十六进制(以(以数字数字 0 0+ +小写字母小写字母x开头)开头) 例如:例如:0 0 x3636(十进制(十进制54 54 ) 5.整型常量分类
18、整型常量分类 (1 1)基本整型:)基本整型: 其数据范围其数据范围 -32768 32767 (与与 int 型变量一样)型变量一样) (2 2)长整型(在数值后面加字母)长整型(在数值后面加字母 L L(小写字母(小写字母l l):): 其取值范围可达:其取值范围可达: -21474836482147483647 例如:例如:32769、123L、315L 等。等。2021/7/2420 6. 整型数据在内存中的存放,数值是以补码表整型数据在内存中的存放,数值是以补码表示的。示的。 一个正数的补码与原码相同;一个正数的补码与原码相同; 一个负数的补码求法一个负数的补码求法:原码的二进制形式
19、,取:原码的二进制形式,取反求得反码,再加反求得反码,再加 1 1 ,得到负数的补码。,得到负数的补码。 例如:例如:- 8 的的原码原码1 0 00 00 00 00 00 10 00求反码求反码1 1 11 11 11 11 11 01 11补码补码11 11 11 11 11 11 10 002021/7/2421例例3.4 输出不同进制整型常量输出不同进制整型常量#includemain() printf(“0 x80 -%d n, 0 x80); printf(“0200 -%d n,0200); printf(128 - %d n,128); printf(128 - %o n,1
20、28);运行结果运行结果: 0 x80 -128 0200 -128 128 - 128 128 - 200不输出前缀不输出前缀数字数字 以数字以数字开头开头2021/7/24223.1.2 3.1.2 实实 型型 数数 据据 1.实型常量(实数,又称浮点数)表示形式实型常量(实数,又称浮点数)表示形式: (1)十进制形式)十进制形式 例如例如: 3.14 、 9.8 (2)指数形式)指数形式 E(e) 例如例如: 3.02+5 (3.02105) 34.42367750+7 (34.42367750107) 实型常量不分实型常量不分(单精度(单精度 ) float型和型和 (双精度(双精度
21、) double 型。型。 一个实型常量,可以赋给一个实型变量(一个实型常量,可以赋给一个实型变量(float型或型或double型)。型)。2021/7/2423例例3.5 实型常量的使用实型常量的使用 #include main( ) printf(a=%fn, 32.766 ); printf(“ b=%en, 1.7e+37); 运行结果运行结果: a = 32.766000 b = 1.700000e+0372021/7/2424 2. 实型变量分类实型变量分类 (1)单精度型)单精度型变量变量 float型型变量变量 占占4 字节(字节( 32位)位) 提供提供 7 位有效数字位有
22、效数字 值域:值域: (3.4e-383.4e+38) (2)双精度型)双精度型变量变量 double型型变量变量 占占 8 个字节个字节( 64位位) 提供提供 1516位有效数字位有效数字 值域:值域: ( 1.7e-3081.7e+308)2021/7/2425 4. 实型数据在内存中的存放形式。实型数据在内存中的存放形式。 一个单精度实型数据(一个单精度实型数据(float)在在内存中内存中占用个字占用个字节(节(32位)位) 存放数据的数存放数据的数值范围:值范围: (3.4e-383.4e+38) 数数值的有效数字值的有效数字 7位位 例如数例如数值值: 56783.4562 0.
23、567834562e+5 在内存中的浮点在内存中的浮点数数存放形式存放形式: : + 5 + 567834562 0 8 31 前前8位位 后后24位位2021/7/2426实型数据类型类型类型符号符号关键字关键字所占所占位数位数数的表示范围数的表示范围实实型型有有float323.4e-383.4e+38有有double641.7e-3081.7e+3082021/7/2427例例3.6 运行以下程序,查看运行结果。运行以下程序,查看运行结果。数值的有效数值的有效数字数字 7 7 位位尾数尾数70317031不是不是有效数值有效数值2021/7/2428例例3.7 实型变量的使用实型变量的使
24、用 #includemain() float x, y, z; x=42.67; y=12.3; z=x/y; printf(“ z1=%fn, z); z=y/x; printf(“ z2=%fn,z); 程序运行结果:程序运行结果: z1=3.469106 z2=0.288259小数点后小数点后6 6位位2021/7/24293.1.33.1.3 字字 符符 数数 据据1.字符常量的定义字符常量的定义用一对单引号括起来的单个字符称为字符常量。用一对单引号括起来的单个字符称为字符常量。例如例如: A、7、 等。等。2.转义字符转义字符语言还允许使用一种特殊形式的字符常量,就是语言还允许使用一
25、种特殊形式的字符常量,就是以反斜杠以反斜杠“ ” ”开头的转义字符。开头的转义字符。 n b r t f 0 ” v ddd xhh 注意:注意:如果反斜杠或单引号本身作为字符常量,如果反斜杠或单引号本身作为字符常量,必须使用转义字符:必须使用转义字符: 、 2021/7/2430 3.以以“ ”开头的字符在开头的字符在printf 函数中控制输出格式函数中控制输出格式:n换行换行t横向跳格(下一个输出区横向跳格(下一个输出区)v竖向跳格竖向跳格b退格退格r回车回车f走纸换页走纸换页反斜杠字符反斜杠字符 单引号单引号 ddd1到到3位位8进制数所代表的字符。如:进制数所代表的字符。如:101=
26、Axhh1到到2位位16进制数所代表的字符。进制数所代表的字符。 2021/7/2431例例3.9 用转义字符输出字符和不可打印字符。用转义字符输出字符和不可打印字符。main() printf(“ABC tabc txyz n”); printf(“abcbxyz n”); 程序运行结果如下程序运行结果如下: 2021/7/24324. 字符变量字符变量( 关键字为关键字为 char )字符变量类型,占用字符变量类型,占用1字节字节内存单元。内存单元。(1) 变量值的存储变量值的存储 将一个字符常量存储到一个字符变量中,实际上将一个字符常量存储到一个字符变量中,实际上是将该字符的是将该字符的
27、 ASCII 码值(无符号整数)存储到内存码值(无符号整数)存储到内存单元中。单元中。(2) 变量值的特性变量值的特性字符数据在内存中存储的是字符的字符数据在内存中存储的是字符的 ASCII 码(一码(一个无符号整数),其形式与整数的存储形式一样。个无符号整数),其形式与整数的存储形式一样。2021/7/2433例如:例如:char ch1, ch2; /*定义变量:定义变量:ch1,ch2*/ch1= a ; /*给字符变量赋值给字符变量赋值*/ch2= b ; 字符数据字符数据 a 、b 的的 ASCII 码值码值97、98 (一(一个无符号整数)分别存放在变量个无符号整数)分别存放在变量
28、ch1, ch2所占用内所占用内存存储单元中,其形式与整数的存储形式一样。存存储单元中,其形式与整数的存储形式一样。 ch1 ch297982021/7/2434字符数据类型类型类型符号符号关键字关键字所占位数所占位数数的表示范围数的表示范围字字符符型型有有char8-128127无无unsigned char802552021/7/2435(3)一个字符型数据,既可以)一个字符型数据,既可以字符形式字符形式输出,也可输出,也可 以以整数形式整数形式输出。输出。 例例3.10字符变量的字符形式输出和整数形式输出字符变量的字符形式输出和整数形式输出。 main() char ch1, ch2;
29、ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn”,ch1,ch2); printf(“ch1=%d,ch2=%dn”,ch1,ch2); 程序运行结果:程序运行结果: ch1=a, ch2=b ch1=97, ch2=982021/7/2436(4)允许对字符数据进行算术运算,此时就是对它允许对字符数据进行算术运算,此时就是对它们的们的ASCII码值进行算术运算。码值进行算术运算。例例3.11 字符数据的算术运算。字符数据的算术运算。 main() char ch1, ch2; ch1=a; ch2=B; /*等价于等价于 ch1=97;ch2=66;*/ print
30、f(“ch1=%d”,ch1-32); /*字母的大小写转换字母的大小写转换*/ printf(“ch2=%d n”,ch2+32); printf(“ch1=%c,ch2=%cn”,ch1-32, ch2+32); 运行结果:运行结果: ch1=65,ch2=98 ch1=A,ch2=b2021/7/2437例例3.12 用字符形式输出一个大于用字符形式输出一个大于256的数值的数值main() char ch1 =a; printf(ch1+200=%dn, ch1+200); printf(ch1+200=%cn, ch1+200); printf(ch1+256=%dn, ch1+25
31、6); printf(ch1+256=%cn, ch1+256); 程序运行结果程序运行结果: ch1+200=297 ch1+200=) ch1+256=353 ch1+256=a 2021/7/24385. 字符串常量字符串常量(1)字符串常量的概念和字符串长度字符串常量的概念和字符串长度字符串常量字符串常量: :是用一对双引号括起来的若干字符序列。是用一对双引号括起来的若干字符序列。字符串长度字符串长度: :字符串中字符的个数称为字符串中字符的个数称为字符串长度字符串长度。空串空串: : 长度为长度为0的字符串(即一个字符都没有的字符的字符串(即一个字符都没有的字符串),表示为串),表示
32、为“ ” (一对紧连的双引号)。(一对紧连的双引号)。例如字符串常量例如字符串常量:“How do you do.” 长度为长度为14(空格也是一个字符)(空格也是一个字符) “Good morning.” 长度为长度为13 如果反斜杠和双引号作为字符串中的有效字符,则必如果反斜杠和双引号作为字符串中的有效字符,则必须使用转义字符。例须使用转义字符。例 C:msdosv6.22 C: msdos v6.22 I say:Goodbye! I say:Goodbye! 2021/7/2439 例例3.13 输出字符串常量输出字符串常量#includemain() char *p; /*定义一个指
33、针变量定义一个指针变量*/ p=I am a student.; printf(%sn,p); printf(%sn, I say:Goodbye! ); 运行结果:运行结果: I am a student. I say:Goodbye! 2021/7/24406.字符串的存储字符串的存储C语言规定:语言规定:在存储字符串常量时,由系统在字符串的末尾自动加在存储字符串常量时,由系统在字符串的末尾自动加一个一个0作为字符串的结束标志。作为字符串的结束标志。如果有一个字符串为如果有一个字符串为“CHINA”,则它在内存中的实际,则它在内存中的实际存储如下所示:存储如下所示: C H I N A 0
34、最后一个字符最后一个字符0是系统自动加上的,它占用是系统自动加上的,它占用字节字节而而非字节内存空间。非字节内存空间。2021/7/24417.字符常量字符常量 A 与字符串常量与字符串常量 A 的区别:的区别:(1)定界符不同:)定界符不同: 字符常量使用字符常量使用单引号单引号A , 而字符串常量使用而字符串常量使用双引号双引号 ;(2)长度不同:)长度不同:字符常量的长度固定为字符常量的长度固定为1,而字符串常量的长度,可,而字符串常量的长度,可以是以是0,也可以是某个整数;,也可以是某个整数;(3)存储要求不同:)存储要求不同: 字符常量存储的是字符的字符常量存储的是字符的ASCII码
35、值,码值,而字符串常量,除了要存储有效的字符外,还要存而字符串常量,除了要存储有效的字符外,还要存储一个结束标志储一个结束标志 0 。2021/7/24423.23.2 常用运算符和表达式常用运算符和表达式1. 1. 运算符运算符 C C语言具有丰富的运算符。语言具有丰富的运算符。 Turbo C Turbo C 提供了提供了4444种种数据操作运算符,其使用范围很宽。数据操作运算符,其使用范围很宽。 运算符运算符是一种向编译程序说明特定的运算或操作是一种向编译程序说明特定的运算或操作的符号。每一种运算符都具有特定的数据操作规则。的符号。每一种运算符都具有特定的数据操作规则。 2. 2. 运算
36、符的分类运算符的分类 (1 1)按运算符要求运算对象的个数分类:单目运)按运算符要求运算对象的个数分类:单目运算符、双目运算符、三目运算符。算符、双目运算符、三目运算符。 (2 2)按其数据操作功能分类:算术运算符、关系)按其数据操作功能分类:算术运算符、关系运算符、逻辑运算符、位运算符、运算符、逻辑运算符、位运算符、C C的特殊运算符的特殊运算符 。 2021/7/2443 3.3.运算符的优先级运算符的优先级 当一个表达式中出现多个运算符时,表达式的求值运当一个表达式中出现多个运算符时,表达式的求值运算按运算符的优先级别从高到低的顺序执行。在算按运算符的优先级别从高到低的顺序执行。在C C
37、语言中,语言中,将将4444种运算符的优先级从高到低共分为种运算符的优先级从高到低共分为1515个等级。如书个等级。如书后表所示。后表所示。 4.4.运算符的结合性运算符的结合性(1 1)运算符的)运算符的左结合性左结合性:当一个操作数两侧的运算符具:当一个操作数两侧的运算符具有相同的优先级时,操作数先与左边的运算符结合,即有相同的优先级时,操作数先与左边的运算符结合,即自左至右的结合方向。自左至右的结合方向。(2 2)运算符的)运算符的右结合性右结合性: 即自右至左的结合方向。即自右至左的结合方向。除单目运算符、赋值运算符和条件运算符是右结合性外,除单目运算符、赋值运算符和条件运算符是右结合
38、性外,其它运算符都是左结合性。其它运算符都是左结合性。2021/7/2444 初等运算符初等运算符 ( )、 、 单目运算符 !、!、+ +、 、+ 、 、(类型类型) 算术运算符算术运算符 、/ 、% ,+、 关系运算符 、= ,= =、! = 逻辑运算符逻辑运算符 &、 条件运算符 ? : 赋值运算符赋值运算符 =、+=、 =、 =、/=、%= 逗号运算符 ,各类运算符的优先级(各类运算符的优先级(从高至低从高至低):):高高低低2021/7/2445 5.5.表达式表达式 用运算符和括号将运算对象(常量、变量和函数等)用运算符和括号将运算对象(常量、变量和函数等)连接起来的、符合语言语法
39、规则的式子,称为表达式。连接起来的、符合语言语法规则的式子,称为表达式。(1 1)简单表达式:表达式中只有一个运算符的表达式,简单表达式:表达式中只有一个运算符的表达式,被称为普通表达式,或称为简单表达式。被称为普通表达式,或称为简单表达式。(2 2)复合表达式:有多个运算符构成的表达式,被称复合表达式:有多个运算符构成的表达式,被称为复合表达式。为复合表达式。(3 3)特殊表达式:在使用中,单个常量、变量和函数特殊表达式:在使用中,单个常量、变量和函数(返回值)都可以看作是一个表达式,称为特殊表达式。(返回值)都可以看作是一个表达式,称为特殊表达式。2021/7/24466.6.表达式求值表
40、达式求值每一个每一个C C的合法表达式的合法表达式 ,经过运算一定能得到一,经过运算一定能得到一个确定的数值,这个数值被称为表达式的值。个确定的数值,这个数值被称为表达式的值。复合表达式的求解过程如下复合表达式的求解过程如下: (1)(1) 按运算符的优先级高低次序执行。例如,先按运算符的优先级高低次序执行。例如,先乘除后加减。乘除后加减。(2)(2) 如果在一个运算对象(或称操作数)两侧的如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按语言规定的结合方向运算符的优先级相同,则按语言规定的结合方向(结合性)进行。(结合性)进行。 2021/7/24473.2.1 3.2.1 赋赋
41、 值值 运运 算算 1.1.赋值运算符赋值运算符 赋值运算符赋值运算符: : “ = ” ,它的作用是将一个表达式的,它的作用是将一个表达式的值赋给一个变量。值赋给一个变量。 给变量赋值的一般形式为:给变量赋值的一般形式为:变量变量 = 表达式表达式 2 2赋值运算符的优先级赋值运算符的优先级 赋值运算符的优先级低于算术运算符,也低于关赋值运算符的优先级低于算术运算符,也低于关系运算符和逻辑运算符。系运算符和逻辑运算符。 3 3赋值运算结合方向赋值运算结合方向 赋值运算结合方向:自右向左结合。赋值运算结合方向:自右向左结合。2021/7/24484.4.赋值表达式赋值表达式由赋值运算符或复合赋
42、值运算符,将一个变量和一由赋值运算符或复合赋值运算符,将一个变量和一个表达式连接起来的表达式,称为赋值表达式。个表达式连接起来的表达式,称为赋值表达式。(1)赋值表达式赋值表达式一般格式一般格式 变量变量 赋值运算符赋值运算符 表达式表达式 例如,例如, a = 5 、 b=x+3*y(2)赋值表达式的值)赋值表达式的值任何一个表达式都有一个值,赋值表达式也不例外。任何一个表达式都有一个值,赋值表达式也不例外。被赋值变量的值,就是赋值表达式的值。被赋值变量的值,就是赋值表达式的值。例如,例如,a = 5 赋值表达式,变量赋值表达式,变量a的值的值是是 赋值表达式的值赋值表达式的值是是 。202
43、1/7/2449 例如,例如,int x; float y; x = 5 y = (float)5 / 2 如果表达式值的类型,与被赋值变量的类型不一如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式致,但都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变的值转换成被赋值变量的数据类型,然后再赋值给变量。量。 表达式表达式 x = 5 的值的值: : 5 变量变量 x 的值的值: : 5 表达式表达式 y = (float)5 / 2 的值的值: : 2 .5 变量变量 y 的值的值: : 2 .5 2021/7/245
44、0(3)赋值运算结合方向:右赋值运算结合方向:右左左例如例如: : x = y = 65 等价于等价于 x = ( y = 65 ) 操作数操作数 y 是先与是先与右右边的运算符结合,即边的运算符结合,即 先将先将 65 赋值给变量赋值给变量 y 变量变量 y 的的值是值是 65 表达式表达式 y = 65 的的值是值是 65 再做再做左左边边赋值运算,赋值运算,即即 将将表达式表达式 y = 65的的值值65, 赋值给变量赋值给变量 x 变量变量 x 的的值是值是 65 表达式表达式 x = y = 65 的的值是值是 652021/7/2451 5.5.复合赋值运算复合赋值运算 复合赋值运
45、算符复合赋值运算符:是由赋值运算符之前再加一个双目是由赋值运算符之前再加一个双目运算符构成的。运算符构成的。 (1)复合赋值运算的一般格式为:复合赋值运算的一般格式为: 变量变量 双双 目目 运运 算算 符符 = 表达式表达式 复合赋值运算符复合赋值运算符它等价于:它等价于: 变量变量 = 变量变量 双目运算符双目运算符 (表达式表达式) 例如:例如: y *= x + 6 等价于等价于 y=y * (x+6) 不是不是 y=y * x+6 2021/7/2452当表达式为简单表达式时,表达式外的一对圆括号当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否则可能出错。才可缺省,否则可能出
46、错。 例如:例如: x+=a 等价于等价于 x=x + a x/=3 等价于等价于 x=x/3 (2) 10种复合赋值运算符种复合赋值运算符C语言规定的语言规定的10种复合赋值运算符如下:种复合赋值运算符如下:复合算术运算符复合算术运算符: += -= *= /= %=复合位运算符复合位运算符: &= = |= = 2021/7/2453例例3.17 输出输出复合赋值运算结果。复合赋值运算结果。main() int x, y, m; x=10; y=3; m= 24; m/= x 4 ; printf(“%dn” ,m); printf(“%fn”,(float)x/y); x=1; y*=x
47、+2; printf(“%d-%dn”, x/y, x%y); 运行结果:运行结果: 4 3.333333 0-1m = m / (x 4) ;2021/7/2454例例3.18 输出多个算术表达式的结果输出多个算术表达式的结果#includemain() int a,b,c1; a=5; b=8; printf(“a1=%d ,a2=%d n,a+b,a+=b); printf(“a3=%dn, a);程序运行结果程序运行结果: a1=21, a2=13 a3=13先运算先运算ab的的 值是值是13,变量变量a的值是的值是13再运算再运算a+b的值的值 是是212021/7/24553.2.
48、23.2.2 算算 术术 运运 算算 1.五种基本算术运算符五种基本算术运算符 + + ( 加法加法 ) - - ( 减法减法/ /取负取负 ) * * ( 乘法乘法 ) / / ( 除法除法 ) % % ( 求余数求余数 ) 2. 运算符的优先级与结合性运算符的优先级与结合性 (1)算术运算符的优先级)算术运算符的优先级 先先取负取负、再、再乘、除、求余乘、除、求余,最后,最后加、减法加、减法 (2)运算符的结合性为:自左至右的结合方向。)运算符的结合性为:自左至右的结合方向。 2021/7/24563. 3. 算术表达式算术表达式 由算术运算符和括号将运算对象连接起来形成的由算术运算符和括
49、号将运算对象连接起来形成的运算式子,称为算术表达式运算式子,称为算术表达式 例如,例如,3 + 6 * 9 、(x + y) / 2 14.4.算术表达式的值算术表达式的值除除C C语言的特定规则外,语言的特定规则外,C C语言中算术运算与数学中语言中算术运算与数学中的算术运算规则相同,经过有限次加减除等运算,最后的算术运算规则相同,经过有限次加减除等运算,最后求得表达式的值。求得表达式的值。例如,例如,表达式表达式 3 + 6 * 9 的值的值: : 572021/7/2457 5. C5. C语言算术运算的特定规则语言算术运算的特定规则 (1 1)两个整数相除,其商为整数,小数部分被舍弃)
50、两个整数相除,其商为整数,小数部分被舍弃。 例如,例如, 表达式:表达式:5/2 的值为的值为 2 ,不是,不是 2.5。而。而表达式:表达式:12.6/3的值为的值为4.2 ,不是,不是 4。 (2 2)关于求余数运算,要求求余运算符两侧的操作)关于求余数运算,要求求余运算符两侧的操作数均为整型数据,否则出错。数均为整型数据,否则出错。 例如,例如,表达式:表达式:5%3 的值为的值为2。而。而5.32出错,不出错,不是合法是合法表达式表达式。 (3 3)C C语言的整型、实型和字符型数据间可以混合语言的整型、实型和字符型数据间可以混合运算。运算。2021/7/2458例例3.14 输出算术
51、表达式的结果输出算术表达式的结果#includemain() int a,b,c1; float x,y,z; a=85; b=18; x=42.6; y=28.3; c1=a/b * 9 +a %b; z=x/y(x+y)/2 1; printf(c1=%dn,c1); printf(z1=%fn, z);程序运行结果程序运行结果: c1=49 z1=39.172222a/b的值是的值是4,4乘乘9得得36,a%b的值的值1336+13得得492021/7/2459混合运算中数据类型的转换:混合运算中数据类型的转换:6.数据类型转换数据类型转换 1)横向向左的箭头,)横向向左的箭头,表示必须
52、的转换。表示必须的转换。char和和short 型必须转换成型必须转换成 int 型,型,float型必须转型必须转换成换成double型。型。 2)纵向向上的箭头,)纵向向上的箭头,表示不同类型的转换方表示不同类型的转换方向。向。doublefloatlongunsignedintChar ,short2021/7/2460(1)整型、实型和字符型数据间可以混合运算)整型、实型和字符型数据间可以混合运算(因为字符数据与整型数据可以通用)。(因为字符数据与整型数据可以通用)。一个运算符两侧的操作数的数据类型不同,则按一个运算符两侧的操作数的数据类型不同,则按“先转换、后运算先转换、后运算”的原
53、则,首先将数据自动转换成的原则,首先将数据自动转换成同一类型,然后进行运算。同一类型,然后进行运算。例如,例如,int 型型与与 double 型数据进行型数据进行混合运算混合运算,则先将,则先将 int 型数据转换成型数据转换成 double 型,然后在两个同类型的数型,然后在两个同类型的数据间进行运算,据间进行运算,结果为结果为double型。型。 注意箭头方向只表示数据类型由低向高转换注意箭头方向只表示数据类型由低向高转换.2021/7/2461例例3.15整型、实型数据间混合运算整型、实型数据间混合运算#includemain() int a; float x; a=35; x=42.
54、63; printf(%fn,a+x); printf(%fn,x/a);程序运行结果程序运行结果: 77.630001 1.218000自动将自动将X的的数据转换成数据转换成 double 型,再将型,再将 int 型变量型变量a数据转换成数据转换成 double 型型,进行进行加法运算,运算加法运算,运算结果为结果为double型型2021/7/2462 7.7.数据类型强制转换数据类型强制转换数据类型允许强制转换数据类型允许强制转换, ,一般格式为:一般格式为: ( (数据类型数据类型)()(表达式表达式) )例如例如: : (int)(x + y) /*将将 x+y 的结果转换成的结果
55、转换成 int 型型*/(1)(1)当被转换的表达式是一个简单表达式时,外面当被转换的表达式是一个简单表达式时,外面的一对圆括号可以缺省。的一对圆括号可以缺省。例如例如: :(double)a /*将变量将变量a的值转换成的值转换成double型型*/2021/7/2463(float)5/2 (等价于(等价于(float)(5)/2) /*将将5转换成实型再除以转换成实型再除以2(=2.5)*/(float)(5/2) / /* *将将5 5整除整除2 2的结果的结果:2,:2,转换成实型数:转换成实型数:2.02.0* */ /(2)(2)强制转换类型得到的是一个所需类型的中间量,原强制转
56、换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。表达式类型并不发生变化。例如,例如,(double)a 只是将变量只是将变量a a的值转换成一个的值转换成一个double型的中间量,其数型的中间量,其数据类型并未转换成据类型并未转换成double型。型。2021/7/2464例例3.16 数据类型强制转换数据类型强制转换#includemain() int a; float x,y; a=85; x=42.6; y=19.3; printf(“1-%ft, (float)5/2 ); printf(“2-%fn, (float)(5/2); printf(“3-%dt, (int
57、)(x + y) ); printf(“4-%fn, (double)a );程序运行结果:程序运行结果: 1-2.500000 2-2.000000 3-61 4-85.0000002021/7/24653.2.3 3.2.3 自自 增增 自自 减减 运运 算算1. 自增(自增(+)、自减()、自减(-)运算)运算 自增运算使单个变量的值增,自增运算使单个变量的值增, 自减运算使单个变量的值减。自减运算使单个变量的值减。2.用法与运算规则用法与运算规则 (1)前置运算前置运算运算符放在变量之前:变量、运算符放在变量之前:变量、变量变量,先使变量的值增(或减),然后再以变化后的值先使变量的值增
58、(或减),然后再以变化后的值参与其它运算,即参与其它运算,即先增、减先增、减, 后运算后运算。 (2)后置运算后置运算运算符放在变量之后:变量、变运算符放在变量之后:变量、变量,变量先参与其它运算,然后再使变量的值增(或量,变量先参与其它运算,然后再使变量的值增(或减),即减),即先运算,后增、减先运算,后增、减。(3)结合方向:右结合方向:右左左2021/7/24663.自增、自减运算说明自增、自减运算说明(1)自增、自减运算符,不能用于常量和表达自增、自减运算符,不能用于常量和表达式。式。 例如,例如,5+、-(a+b) 等都是非法等都是非法的。的。(2)自增、自减运算,常用于循环语句中,
59、使自增、自减运算,常用于循环语句中,使循环控制变量加(或减),以及指针变量中,使指循环控制变量加(或减),以及指针变量中,使指针指向下(或上)一个地址。针指向下(或上)一个地址。 (3)在表达式中,连续使同一变量进行自增或在表达式中,连续使同一变量进行自增或自减运算时,很容易出错,所以最好避免这种用法。自减运算时,很容易出错,所以最好避免这种用法。例如:例如:a+a+a+b2021/7/2467例例3.20 求下列表达式的值求下列表达式的值设设 int a, b; a=3; b=4; (1) +a + b+ 变量变量a: 4 , 表达式值:表达式值:8 , 变量变量b: 5 (2) a+a+a
60、 等价于等价于 (a+)+(a+)+a 表达式值:表达式值: 9 , 变量变量a: 5 (3) a + (+a) + (+a) 变量变量a: 5 , 表达式值表达式值: 152021/7/2468 例例3.21 自增自减运算符的用法与运算规则示例自增自减运算符的用法与运算规则示例main() int x=6, y; printf(x=%dn,x); /*输出输出x的初值的初值*/ y =+x; /*前置运算前置运算*/ printf(y=+x: x=%d,y=%dn,x,y); y = x - - ; /*后置运算后置运算*/ printf(y=x-: x=%d,y=%dn,x,y); 程序运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市更新项目可行性研究报告
- 插床机构课程设计画图
- 空心板梁课程设计20
- 2024年照明灯具采购与照明环境监测服务合同3篇
- 2024年度单位二手房买卖法律保障协议3篇
- 2024年股权质押合同示例
- 2024年度代运营服务与运营支持合同2篇
- 涂料学课程设计
- 2024年度餐饮业临时员工招募与管理合同3篇
- 摇臂钻床plc课程设计
- DB5105-T 4001-2023 白酒贮藏容器 陶坛
- 网络安全培训-网络安全培训课件
- 人教版高一数学上册必修一第三章同步练习题课后练习题含答案解析及章知识点总结
- 大学有机化学人名反应总结
- 污水、废水处理:芬顿氧化法工艺操作及设计
- CVT电压式互感器的结构及工作原理、内在逻辑
- H型钢梁等强连接计算
- 《文明城市建设问题研究开题报告3000字》
- GB/T 3917.1-1997纺织品织物撕破性能第1部分:撕破强力的测定冲击摆锤法
- 玲龙医用诊断X 射线系统 XR 6000维修手册
- 残疾学生送教上门记录
评论
0/150
提交评论