第三章 数据类型、运算符、表达式

上传人:M****1 文档编号:569324508 上传时间:2024-07-28 格式:PPT 页数:103 大小:2.32MB
返回 下载 相关 举报
第三章 数据类型、运算符、表达式_第1页
第1页 / 共103页
第三章 数据类型、运算符、表达式_第2页
第2页 / 共103页
第三章 数据类型、运算符、表达式_第3页
第3页 / 共103页
第三章 数据类型、运算符、表达式_第4页
第4页 / 共103页
第三章 数据类型、运算符、表达式_第5页
第5页 / 共103页
点击查看更多>>
资源描述

《第三章 数据类型、运算符、表达式》由会员分享,可在线阅读,更多相关《第三章 数据类型、运算符、表达式(103页珍藏版)》请在金锄头文库上搜索。

1、第第3章章 数据类型、运算符、表达式数据类型、运算符、表达式第第3章章 数据类型、运算符、表达式数据类型、运算符、表达式3.1 数据在计算机中是怎样存储的3.2 整型数据的运算与分析3.3 实型数据的运算与分析3.4 字符型数据的运算3.5 变量赋初值3.6 各类数值型数据之间的混合运算3.7 算术运算符和算术表达式3.8赋值运算符和赋值表达式3.9逗号运算符和逗号表达式3.10 编程的一般规范3.1 数据在计算机中是怎样存储的数据在计算机中是怎样存储的3.1.1 数据在计算机中是以二进制形式存储的3.1.2 位、字节和地址3.1.3 常量和变量计算机内部的信息都是用二进制表示计算机存储器是用

2、半导体集成电路构成的有两种稳定的工作状态:“导” 与“截止”,即电脉冲的“有”与“无”分别用“1”和“0”表示3.1.1 3.1.1 数据是以二进制形式存储的数据是以二进制形式存储的数据是以二进制形式存储的数据是以二进制形式存储的若相邻的8个二极管元件中第1,3,5,7个元件处于“导通”状态,第2,4,6,8个元件处于“截止”状态,用“10101010”表示 导通导通 截止截止 导通导通 截止截止 导通导通 截止截止 导通导通 截止截止 1 0 1 0 1 0 1 0 3.1.1 3.1.1 数据是以二进制形式存储的数据是以二进制形式存储的数据是以二进制形式存储的数据是以二进制形式存储的十进制

3、数十进制数二进制数二进制数0 00 01 11 12 210103 311114 41001005 5101101十进制数十进制数二进制数二进制数6 61101107 71111118 8100010009 9100110011010101010103.1.1 3.1.1 数据是以二进制形式存储的数据是以二进制形式存储的数据是以二进制形式存储的数据是以二进制形式存储的3.1.2 位、字节和地址位、字节和地址位(bit) ,又称“比特” 。每一个二极管元件称为一个“二进制位”,是存储信息的最小单位。它的值是“1”或“0”字节(byte) ,又称“拜特” 。一般将8个“二进制位”组织成一组,称为“

4、字节”。这是人们最常用的存储单位1字节=8位200120022003200420052006地址。计算机的存储器包含许多存储单元,操作系统把所有存储单元以字节为单位编号3.1.2 位、字节和地址位、字节和地址3.1.3 常量和变量常量和变量常量是指在程序运行过程中其值不能改变的量变量是指在程序运行过程中其值可以改变的量常量包括:1.直接常量(字面常量) 整形常量,实型常量,字符常量2.符号常量:用标识符代表一个常量 定义形式为: #define 标识符 常量3.1.3 常量和变量符号常量符号常量的作用的作用 例:求以r为半径的圆周长c和圆面积s,再求以r为半径的圆球体积v。 c=2*3.141

5、5926*r; s=3.1415926*r*r; v=4/3*3.1415926*r*r*r;#include void main()double r=3.67,c,s,v; c= 2 * 3.1415926 *r; s= 3.1415926 * r*r ; v= 4/3 * 3.1415926 * r*r*r ; printf(“c=%fns=%fnv=%fn”,c,s,v);c=23.059290s=42.313797v=155.291633有错有错4.0/3.0#include void main()double r=3.67,c,s,v; c= 2 * 3.1415926 *r; s=

6、 3.1415926 * r*r ; v= 4.0/3.0 * 3.1415926 * r*r*r ; printf(“c=%fns=%fnv=%fn”,c,s,v);c=23.059290s=42.313797v=207.055511pow(r,2)pow(r,3)#include #include #include void main()double r=3.67,c,s,v; c= 2 * 3.1415926 *r; s= 3.1415926 * pow(r,2); v= 4.0/3.0 * 3.1415926 *pow(r,3); printf(“c=%fns=%fnv=%fn”,c,

7、s,v);c=23.059290s=42.313797v=207.055511#define PI 3.1415926PIPIPI#include #include void main()double r=3.67,c,s,v; c= 2 * PI *r; s= PI * pow(r,2); v= 4.0/3.0 * PI *pow(r,3); printf(“c=%fns=%fnv=%fn”,c,s,v);c=23.059290s=42.313797v=207.055511#define PI 3.1415926符号常量符号常量符号常量的性质和使用方法符号常量的性质和使用方法#define不

8、是C语句,行末没有分号#define是一个“预编译命令”符号常量一般用大写,以示与变量区别好处:含义清楚在需要改变一个常量时能做到“一改全改”用符号常量能保护所代表的数据不被破坏要注意区别变量名和变量值16h2000存储单元存储单元变量名变量名变量地址变量地址变量值变量值变量要注意区别变量名和变量值16h2000执行执行h=37;37变量3.2 整型数据的运算与分析整型数据的运算与分析3.2.1 整型数据运算程序举例和分析3.2.2 整型常量与整型变量3.2.1 整型数据运算程序举例和分析整型数据运算程序举例和分析 例2.1 鸡兔同笼。在一个茏子里同时养着一些鸡和兔子,你想了解有多少只鸡和多少

9、只兔,主人对你说:我只告诉你鸡和兔的总头数是16和总脚数是40,你能不能自己计算有多少只鸡和多少只兔?3.2.1 整型数据运算程序举例和分析整型数据运算程序举例和分析解题思路:设x代表鸡的数量,y代表兔的数量,总头数为h,总脚数为f列出下面的方程式: x + y = h (1) 2x + 4y = f (2)解方程得到:3.2.1 整型数据运算程序举例和分析整型数据运算程序举例和分析#include void main() int h,f,x,y; h=16; f=40; y=(f-2* h)/2; x=h-y; printf(“%d%dn”,x,y); 定义整型变量定义整型变量h,f,x,y

10、使使h的值等于的值等于16使使f的值等于的值等于40计算兔的个数计算兔的个数计算鸡的个数计算鸡的个数3.2.1 整型数据运算程序举例和分析整型数据运算程序举例和分析#include void main() int h,f,x,y; h=16; f=40; y=(f-2* h)/2; x=h-y; printf(“%d%dn”,x,y); 输出鸡和兔个数输出鸡和兔个数124%d,%d3.2.1 整型数据运算程序举例和分析整型数据运算程序举例和分析#include void main() int h,f,x,y; h=16; f=40; y=(f-2* h)/2; x=h-y; printf(“%

11、d%dn”,x,y); 输出鸡和兔个数输出鸡和兔个数12,4%d,%dcock=%d, rabbit=%d3.2.1 整型数据运算程序举例和分析整型数据运算程序举例和分析#include void main() int h,f,x,y; h=16; f=40; y=(f-2* h)/2; x=h-y; printf(“%d%dn”,x,y); 输出鸡和兔个数输出鸡和兔个数12,4cock=%d, rabbit=%dcock=12, rabbit=4整型常量的表示形式整型常量的表示形式在语言中,整常数可用3种形式表示:10进制整数,如123,-4568进制整数,特点是逢8进1。在程序中凡以0开头

12、的数都认作8进制数16进制整数。特点是逢16进1。用09、af分别代替015。在程序中凡以0x或0X开头的数都认作16进制数a=83; /* 10进制数进制数 */a=0123; /* 8进制数进制数 */ a=0x53; /* 16进制数进制数 */3.2.2 整型常量与整型变量整型常量与整型变量整形常数的取值范围是有限的后缀:L或l(长整型数),U或u(无符号数)a=83L; /* 分配分配4个字节个字节 */a=123u; /* 无符号数无符号数 */ a=0XA5Lu; /* 16进制进制无符号长整数无符号长整数 */整型常量的类型整型常量的类型数据是要存储的,不同类型的数据所分配的字

13、节和存储方式是不同的整型变量有类型,因此整型常量也应该有类型,才能在赋值时匹配根据常量的大小、数后面加的字母l或L、u或U判断其类型整型数据的存储方式先转换为二进制形式,以补码表示。正数的补码与原码相同,负数的补码是该数绝对值的二进制形式按位取反加1如整数10,以二进制形式表示是10100 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0用两字节存放用两字节存放求补码的方法求补码的方法求-1的补码的方法是:00000001原码原码11111110诸位取反诸位取反反码反码11111111反码加反码加1补码补码求补码的方法求补码的方法求一个负数的补码的方法是:取该数(不考虑数的符号)的二

14、进制形式,它就是原码对该原码逐位“取反”(逐位把0变1,把1变0),得到其“反码”将得到的反码加1求补码的方法求补码的方法求-10的补码的方法是?00001010原码原码11110101诸位取反诸位取反反码反码11110110反码加反码加1补码补码整型变量的类型整型变量的类型可以定义和使用以下6种整型变量:有符号基本整型 signed int无符号基本整型 unsigned int有符号短整型 signed short int无符号短整型 unsigned short int有符号长整型 signed long int无符号长整型 unsigned long intIBM PCIBM PC机器

15、所对应的不同形式整型数据的存储范围机器所对应的不同形式整型数据的存储范围定义变量的一般形式是: 类型名 变量名,变量名,;例如:int h,f,x,y;变量都必须在使用前定义,指定其类型赋值:h=37; f=88;整型变量整型变量的定义的定义变量名的取名规则变量名第一个字符必须是字母或下划线,其后字符必须是字母、数字或下划线合法合法:sum,average, _total, Class, day, month, Student_name,tan,li_ling不合法不合法:Zhang-sun,Students,, $123,33变量名的取名规则变量名第一个字符必须是字母或下划线,其后字符必须是

16、字母、数字或下划线大小写字母代表不同的字符,一般,程序中的变量名用小写字母表示变量名的长度不是无限的变量名尽量简单易记、见名知意在同一函数中,不同变量不能取相同名变量必须“先定义,后使用”根据定义变量时指定的类型,编译系统为变量分配相应的存储单元凡未被事先定义的,系统不把它认作变量名,保证程序中变量名使用得正确指定了每一变量属于一个类型,就便于在编译时据此检查在程序中要求对该变量进行的运算是否合法整型整型数据的溢出数据的溢出参见课本例3.3不同类型数据间运算不同类型数据间运算参见课本例3.43.3 实型数据的运算与分析实型数据的运算与分析3.3.1 实型数据的运算举例3.3.2 实型常量的表示

17、形式3.3.3 实型变量3.3.1 实型数据的运算举例实型数据的运算举例 例2.2 分期付款的计算。张先生为购房,向银行贷款,贷款额为D元,每月准备还P元,月利率为R,求需要多少个月才能还清。m是还清贷款所需月数是还清贷款所需月数d=324500,p=3245,r=0.8%3.3.1 实型数据的运算举例实型数据的运算举例(1)d和p是整数,r是一个小数,因此程序中要分别定义整型变量和实型变量。(2)公式中用到对数log,这个对数是以10为底的。对数log的函数log103.3.1 实型数据的运算举例实型数据的运算举例#include #include void main() int d,p;

18、float r,m; d=324500; p=3245; r=0.008; m=(log10(p)-log10(p-d*r)/log10(1+r); printf(“month=%fn”,m); printf(“total=%fn”,m*p); 用到用到数学函数数学函数时时定义整型变量定义整型变量d,p定义定义实实型变量型变量r,m赋值赋值求求m的值的值3.3.1 实型数据的运算举例实型数据的运算举例#include #include void main() int d,p; float r,m; d=324500; p=3245; r=0.008; m=(log10(p)-log10(p-d

19、*r)/log10(1+r); printf(“month=%fn”,m); printf(“total=%fn”,m*p); 输出输出m的值的值计算并输出还款数计算并输出还款数total=655436.127930month=201.983404输出实数时输出实数时3.3.1 实型数据的运算举例实型数据的运算举例#include #include void main() int d=324500,p=3245; double r=0.008,m; m=(log10(p)-log10(p-d*r)/log10(1+r); printf(“month=%fn”,m); printf(“total

20、=%fn”,m*p); 定义变量时赋初值定义变量时赋初值定义定义double型无警告错型无警告错3.3.2 实型常量的表示形式实型常量的表示形式实数在计算机语言中常称为浮点数十进制小数形式(必须有小数点且小数点前后不能同时没有数字) 如:0.123, 123.23, 0.0,12.指数形式(e前必须有数字且e后必须为整数) 如:123e3或123E33.3.2 实型常量的表示形式实型常量的表示形式实数在计算机语言中常称为浮点数可加后缀f或F:表示该浮点数占4个字节(float)若不加是按8个字节存的(double)输出格式字符为:%f实数的存储形式对于实数,一律采用指数形式存储123.456标

21、准化指数形式为0.123456103+.12345+3数符数符 数值部分数值部分指数符号指数符号指数指数3.3.3 实型变量实型变量实型变量的分类单精度实型变量(float型)双精度实型变量(double型)长双精度实型变量(long double型)3.3.3 实型变量实型变量实型变量的分类实型数据的舍入误差实型变量是由有限的存储单元组成的能提供的有效数字总是有限的在有效位以外的数字将被舍去会产生一些误差3.3.3 实型变量实型变量实型变量的分类实型数据的舍入误差例:实型数据的舍入误差#include void main() float a; a = 1234.1415926; printf

22、(a=%fn,a);a=1234.1416027位有效位位有效位3.3.3 实型变量实型变量实型变量的分类实型数据的舍入误差把实数按双精度数处理把程序中的实常量处理成双精度型,分配8个字节,以提高精度。float a;a = 1234.1415926;双精度双精度单精度单精度编译时有警告编译时有警告最好:最好:double a;3.4 字符型数据的运算字符型数据的运算3.4.1 字符数据运算的简单例子3.4.2 字符常量和字符变量3.4.3 字符串常量3.4.1 字符数据运算的简单例子字符数据运算的简单例子 例2.4 逐个输出英文字母C,H,I,N,A。然后按反序输出,即A,N,I,H,C。#

23、include void main() char a=C,b=H,c=I,d=N,e=A; printf(“%c%c%c%c%cn”,a,b,c,d,e); printf(“%c%c%c%c%cn”,e,d,c,b,a); 定义字符变量定义字符变量3.4.1 字符数据运算的简单例子字符数据运算的简单例子 例2.4 逐个输出英文字母C,H,I,N,A。然后按反序输出,即A,N,I,H,C。#include void main() char a=C,b=H,c=I,d=N,e=A; printf(“%c%c%c%c%cn”,a,b,c,d,e); printf(“%c%c%c%c%cn”,e,d,

24、c,b,a); 用单撇号括起来用单撇号括起来输出字符输出字符CHINA ANIHC3.4.2 字符常量和字符变量字符常量和字符变量字符常量字符常量是用单撇号括起来的一个字符英文字母可以作为字符常量键盘上的字符都可以作为字符常量小写字母和大写字母是不同的字符常量3.4.2 字符常量和字符变量字符常量和字符变量转义字符(形式上不是一个字符,但它是占一个字符)用开头的特殊形式的字符常量,用以产生一个动作。 如:nr、t、v、123等。转义字符必须以反斜杠“”开头“”后只能有一个字符(或代表字符的8进制或16进制数)3.4.2 字符常量和字符变量字符常量和字符变量t 跳到下一个输出区b 消除前一个已输

25、出的字符r 将当前的输出位置返回在本行开头f 将当前的输出位置移到下页的开头0 常用于字符串中,作为串结束标志 代表一个反斜杠字符“” 代表一个单撤号字符” 代表一个双撤号字符ddd 13位8进制数所代表的字符xhh 12位16进制数所代表的字符3.4.2 字符常量和字符变量字符常量和字符变量ASCII表G 107x47等价3.4.2 字符常量和字符变量字符常量和字符变量字符变量用来存放字符常量只能放一个字符字符变量的定义形式: char 字符变量列表;字符的存储方式对于字符,按ASCII代码存放;分配一个字节的内存空间;所以只能表示0-255间的数A的ASCII代码是65(1000001)0

26、10000013.4.2 字符常量和字符变量字符常量和字符变量字符数据与整型数据在一定条件下通用char c=a;与char c=97;等价3.4.2 字符常量和字符变量字符常量和字符变量字符数据与整型数据在一定条件下通用例2.5 将两个整数分别赋给两个字符变量,再将字符数据按字符和整数形式输出。 #include void main() char c1=97,c2=98; printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); char c1=a,c2=b;a b97 98值的输出形式取决于printf函数格式串中的格式符输出字符输出整数3.4.2 字

27、符常量和字符变量字符常量和字符变量字符数据与整型数据在一定条件下通用例2.5 将两个整数分别赋给两个字符变量,再将字符数据按字符和整数形式输出。字符a的存储(用ASCII代码存放) 01100001按按%c输出:输出:a按按%d输出:输出:97printf(“%c %cn”,97+1,a+1); 输出什么?输出什么?3.4.2 字符常量和字符变量字符常量和字符变量字符数据与整型数据在一定条件下通用例2.5 将两个整数分别赋给两个字符变量,再将字符数据按字符和整数形式输出。b bprintf(“%d %dn”,97+1,a+1); 输出什么?输出什么?98 983.4.2 字符常量和字符变量字符

28、常量和字符变量字符数据与整型数据在一定条件下通用例2.6 将小写字母转换为大写字母。 #include void main() char c1=a,c2=b; c1=c1-32; c2=c2-32; printf(%c,%cn,c1,c2); a97 A65b98 B66c99 C67规律是?规律是?A,B3.4.3 字符串常量字符串常量字符串常量是一对双撇号括起来的字符序列How do you do. CHINAa都是合法的字符串要点:请区别”A”与A的不同。 因为它们各自在内存中存放的长度不同。 “A” AASCII码为0的字符即空操作字符,不引起任何控制动作,也不是一个可显示的字符AA

29、03.4.3 字符串常量字符串常量3.4.3 字符串常量字符串常量字符串常量是一对双撇号括起来的字符序列是字符常量是字符串常量二者的含义是不同的char c;c=a;正确正确char c;c=”a”;错误错误存放字符存放字符a的存储单元的存储单元存放字符串存放字符串”a”的存储单元的存储单元a0a3.5变量赋初值变量赋初值1、变量赋初值的一般形式类型说明符 变量1=值1,变量名2=值2,、2、对变量的初始化:C允许在变量定义时直接用“=”对其进行赋值。如:int sum=0; int a,b,c=5; int a=3,b=3,c=5; char c1=w;不能这样写: int a=d=e=10

30、;例: 字符数据的算术运算。 main() char ch1,ch2; ch1=a; ch2=B printf(“ch1=%c,ch2=%cn”,ch1-32,ch2+32); printf(ch1+200=%dn, ch1+200); printf(ch1+200=%cn, ch1+200); /*字符形式输出一个大于字符形式输出一个大于255的数值的数值*/ printf(ch1+256=%dn, ch1+256); printf(ch1+256=%cn, ch1+256); 程序运行结果:程序运行结果: ch1=A,ch2=b ch1+200=297 ch1+200=) ch1+256=

31、353 ch1+256=a 思考题:用字符形式输出一个大于思考题:用字符形式输出一个大于255的数值,会得到什么结果?的数值,会得到什么结果?分配分配一个字节一个字节的内存空间;所以只能的内存空间;所以只能表示表示0-255间的数间的数3.6各类数值型数据之间的混合运各类数值型数据之间的混合运算算3.6.1 自动转换3.6.2 强制转换3.6.1自动转换自动转换各类数值型数据各类数值型数据间的混合运算间的混合运算uchar和和short型转换为型转换为int型型ufloat型一律转换为型一律转换为double型型u整型整型 (包括包括int,short,long) 数据与数据与double型型

32、数据进行运算,先将整型转换为数据进行运算,先将整型转换为double型型各类数值型数据各类数值型数据间的混合运算间的混合运算 10 + a + i * f - d / e先将先将a转换成整数转换成整数97,运算结果为,运算结果为107i为整型为整型f为为float型型d为为double型型e为为long型型3.6.1自动转换自动转换各类数值型数据各类数值型数据间的混合运算间的混合运算 10 + a + i * f - d / e107先将先将i与与f转成转成double型,运算结果为型,运算结果为double型型i为整型为整型f为为float型型d为为double型型e为为long型型3.6.

33、1自动转换自动转换各类数值型数据各类数值型数据间的混合运算间的混合运算 10 + a + i * f - d / e107double型型先将先将107转换成双精度转换成双精度型型,结果为,结果为double型型i为整型为整型f为为float型型d为为double型型e为为long型型3.6.1自动转换自动转换各类数值型数据各类数值型数据间的混合运算间的混合运算 10 + a + i * f - d / e107double型型double型型转换为转换为double型型double型型最终结果为最终结果为double型型i为整型为整型f为为float型型d为为double型型e为为long型

34、型3.6.1自动转换自动转换3.6.2.强制转换强制转换强制类型转换强制类型转换u在表达式中也可以利用在表达式中也可以利用“强制类型转换强制类型转换”运算运算符将数据转换成所需的类型符将数据转换成所需的类型(double)a (将转换成(将转换成double类型)类型)(int) (x+y) (将(将x+y的值转换成的值转换成int型)型) (float)(5%3)(将(将5%3的值转换成的值转换成float型)型)强制类型转换强制类型转换u强制类型转换的一般形式为强制类型转换的一般形式为: (类型名)(表达式)(类型名)(表达式)例例2.8 强制类型转换。强制类型转换。#include vo

35、id main ( ) float f=3.6; int i; i=(int)f; printf(f=%f,i=%dn,f,i);f3.600000,i=3不改变不改变f的值的值3.6.2.强制转换强制转换强制类型转换的强制类型转换的强制类型转换的强制类型转换的 应用:应用:(1)为满足运算的要求:)为满足运算的要求:如:如: int i=4; float x=13.6; (int)x%i; (13%4=1)(2)提高运算精度:)提高运算精度:如:如: int i=10; float x; x=i/3+25.5; (3+25.5=28.5) 或或 x=(float)i/3+25.5; (3.3

36、3+25.5=28.83)3.6.2.强制转换强制转换3.7算术运算符和算术表达式算术运算符和算术表达式3.7.1 C运算符3.7.2 算术运算符3.7.3 算术表达式3.7.1 C运算符运算符(1) 算术运算符 (+ - * / %)(2) 关系运算符 ( !)(3) 逻辑运算符 (! |)(4) 位运算符 ( | )(5) 赋值运算符 (及其扩展赋值运算符)(6) 条件运算符 (?:)3.7.1 C运算符运算符(7) 逗号运算符 (,)(8) 指针运算符 (* )(9) 求字节数运算符 (sizeof)(10) 强制类型转换运算符 ( (类型) )(11) 成员运算符 (. -)(12)

37、下标运算符 ( )(13) 其他 (如函数调用运算符()算术表达式。如2+6.7*3.5+sin(0.5)赋值表达式。如a=5.6逗号表达式。如a=3,y=4,z=8 用逗号连接若干个表达式,顺序执行这些表达式,整个逗号表达式的值是最后一个表达式的值(今为8)3.7.1 C表达式表达式3.7.2算术运算符算术运算符1.基本的算术运算符基本的算术运算符(双目双目):+ :加法运算符加法运算符 - :减法运算符减法运算符* :乘法运算符乘法运算符/ :除法运算符除法运算符% :求余运算符求余运算符(要求要求两侧均两侧均为整数为整数。如如19%4,结果为,结果为3 。P47例例)3.7.2算术运算符

38、算术运算符两个整数相除的结果为整数两个整数相除的结果为整数u如如5/3的结果值为,舍去小数部分的结果值为,舍去小数部分u若一个是实型,那么结果为若一个是实型,那么结果为double型型uP47例例3.7.2 算术运算符算术运算符如果参加如果参加+、-、*、/ 运算的两个数中有一运算的两个数中有一个数为个数为float或或double型,则结果都是型,则结果都是double型,因为系统将所有型,因为系统将所有float型数据型数据都先转换为都先转换为double型,然后进行运算。型,然后进行运算。这是为了提高运算精度这是为了提高运算精度。强制类型转换运算符3.7.2 算术运算符算术运算符2. 自

39、增、自减运算符:自增、自减运算符:作用是使变量的值增或减作用是使变量的值增或减+i与与- -i称为前缀形式:在计算时先改变变称为前缀形式:在计算时先改变变量的值,再参与其它运算量的值,再参与其它运算i+与与i- -称为后缀形式:在计算时先参与其称为后缀形式:在计算时先参与其它运算,再改变变量的值它运算,再改变变量的值3.7.2算术运算符算术运算符2. 自增、自减运算符:自增、自减运算符:作用是使变量的值增或减作用是使变量的值增或减例:若例:若 i=1 则则 k=+i+2 运行后运行后 i=2、k=4 而而 k=i+2 运行后运行后 i=2、k=3+与与-运算符的的结合性为右结合。运算符的的结合

40、性为右结合。P48P48页页3.163.163.7.3.算术表达式算术表达式用算术运算符和括号将运算对象(也称用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语法规则操作数)连接起来的、符合语法规则的式子,称为算术表达式的式子,称为算术表达式运算对象包括常量、变量、函数等运算对象包括常量、变量、函数等运算符的优先级运算符的优先级运算符的结合性运算符的结合性运算符的优先级与结合性运算符的优先级与结合性先按运算符的优先级别高低次序执行如果优先级别相同,则按规定的“结合方向”处理算术运算符赋值运算符逗号运算符+和-高于其他3.8赋值运算符和赋值表达式赋值运算符和赋值表达式3.8.1 赋值运

41、算符3.8.2 类型转换3.8.3 复合赋值运算符赋值运算符的使用要点赋值运算符的使用要点1 1、含义:将、含义:将“= =”右边的运算对象之值赋给左边的运算对象。右边的运算对象之值赋给左边的运算对象。 如:如:x=1; x=x+1;x=1; x=x+1;2 2、使用要点:、使用要点:(1 1)当)当“= =”两边数据类型不同时,将进行数据类型的自动转两边数据类型不同时,将进行数据类型的自动转换,原则是:以换,原则是:以“= =”左边运算对象的数据类型左边运算对象的数据类型为准。为准。 如:如: intint x; x; float y=3.5; float y=3.5; x=y; x=y;

42、则运行结果为则运行结果为intint型型说明:说明:(2 2)复合赋值运算符复合赋值运算符赋值运算时不同类型数据间的自动转换赋值运算时不同类型数据间的自动转换1 1、实型数据赋值给整型数据时,舍弃小数部分;实型数据赋值给整型数据时,舍弃小数部分; 即:即:intint=float=float的结果为的结果为intint型。型。如:如:float a; int s; a=12.34 ; s=a; 这时这时s的值为的值为12。2 2、将整型数据赋值给实型变量时,数值不变,但数据是浮点形式的;、将整型数据赋值给实型变量时,数值不变,但数据是浮点形式的; 即即float=float=intint的结果

43、为的结果为floatfloat型。型。如:如:intint s; s; float a; float a; s=12; a=s; s=12; a=s; 这时这时a a的值为的值为12.0000012.00000。舍弃舍弃3 3、当字符数据赋值给整型变量时,则将字符数据放到整型变量的低、当字符数据赋值给整型变量时,则将字符数据放到整型变量的低8 8位中位中 即:即: intint=char=char如:如:unsigned char c;unsigned char c; intint x; x; c= c=376376; ; x=c; x=c; 则则x x的值为的值为254254。1 1 1 1

44、 1 1 1 01 1 1 1 1 1 1 01 1 1 1 1 1 1 01 1 1 1 1 1 1 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0赋值运算时不同类型数据间的自动转换赋值运算时不同类型数据间的自动转换复合赋值运算符的使用要点复合赋值运算符的使用要点1 1、含义:在赋值运算符、含义:在赋值运算符“= =”之前加上其它运算符构成的运之前加上其它运算符构成的运 算符。算符。2 2、一般形式:、一般形式: 表达式表达式1 1 运算符运算符= =表达式表达式2 2 等价于:表达式等价于:表达式1=1=表达式表达式1 1 运算符运算符 表达式表达式2 2 如:如:a+=3

45、 a+=3 等价于等价于 a=a+3a=a+3x*=3 x*=3 等价于等价于 x=x*3x=x*3x%=3 x%=3 等价于等价于 x=x%3x=x%3x/=y+3 x/=y+3 等价于等价于 x=x/(y+3)x=x/(y+3)3 3、使用要点、使用要点凡是二元(二目)运算符,都可以与凡是二元(二目)运算符,都可以与“= =”组合成复合赋值符组合成复合赋值符 如:如:+=,-=,*=,/=,%=,=,&=,=,|=+=,-=,*=,/=,%=,=,&=,=,|=等。等。使用复合赋值符的目的:简化程序;提高编译效率。使用复合赋值符的目的:简化程序;提高编译效率。1 1、含义:用于分隔各个表达

46、式,最后一个表达式的值代表整个表达式的值、含义:用于分隔各个表达式,最后一个表达式的值代表整个表达式的值2 2、形式:、形式:简单形式:表达式简单形式:表达式1 1,表达式,表达式2 2 如:如:a=1,a+2a=1,a+2一般形式:表达式一般形式:表达式1 1,表达式,表达式2 2,表达式,表达式3 3,。,表达式,。,表达式n n 如:如:a=3,a+3,a+10,a=a+20,a+1a=3,a+3,a+10,a=a+20,a+13 3、求解过程、求解过程从左至右依次计算各个表达式的的值,最后一个表达式的值即为整个表达式的值。从左至右依次计算各个表达式的的值,最后一个表达式的值即为整个表达

47、式的值。例:例:1 1)a=3*5,a*4 a=3*5,a*4 结果为结果为6060 2 2)(a=3*5,a*4),a+5 (a=3*5,a*4),a+5 结果为结果为20 20 “顺序求值运算符顺序求值运算符”4 4、使用要点、使用要点优先级在所有运算符中为最低优先级在所有运算符中为最低。 如:如: x=(a=3,6*a) x=(a=3,6*a) 结果为结果为 x=18x=18 x=a=3,6*a x=a=3,6*a 结果为结果为 18 (x=3)18 (x=3)并非任何地方出现的并非任何地方出现的“,”都是作为运算符使用的。如:都是作为运算符使用的。如: printf(printf(“%

48、d,%d,%d%d,%d,%d”,a,b,c,a,b,c); ); 即函数参数间的即函数参数间的“,”只作为分隔符。只作为分隔符。3.9逗号运算符和逗号表达式逗号运算符和逗号表达式(1 1)花括号)花括号 它用来包括一个控制模块,如果这个模块是在一个函数中,那么它用来包括一个控制模块,如果这个模块是在一个函数中,那么左花括号放在函数名的下一行,紧靠左边界,如:左花括号放在函数名的下一行,紧靠左边界,如: intint add add(intint x,intx,int y) y) 如果花括号被用来在程序中限制一个运算块,则也使左花括号放如果花括号被用来在程序中限制一个运算块,则也使左花括号放在

49、控制表达式的下一行,右花括号放在被包括的语句的下一行,都与在控制表达式的下一行,右花括号放在被包括的语句的下一行,都与控制表达式的边界对齐。控制表达式的边界对齐。如:如:3.10 编程一般规范 for (i=0;i256;i+) for (i=0;i256;i+) printf(printf(“%d%d % %dndn”,I,x,I,x);); x+=5; x+=5; (2)(2)缩进缩进 缩进总是以缩进总是以3 3个空格为单位。个空格为单位。 题目:题目:1 1、若有以下定义,则能使值为、若有以下定义,则能使值为3 3的表达式是的表达式是intint k=7,x=12 k=7,x=12A)x

50、A)x%=(k%=5) %=(k%=5) B)xB)x%=(k-k%5)%=(k-k%5)C)xC)x%=k-k%5 %=k-k%5 D)(xD)(x%=%=k)-(kk)-(k%=5)%=5)D D2 2、已知字母、已知字母A A的的ASCIIASCII码为十进制数码为十进制数65,65,且且c2c2为字符型为字符型, ,则执行语句则执行语句c2=c2=A A十十6 63;3;后后,c2,c2中的值为中的值为A)D B)67 C)A)D B)67 C)不确定的值不确定的值 D)CD)C3 3、设以下变量均为、设以下变量均为intint类型类型, ,则值不等于则值不等于7 7的表达式是的表达式

51、是A) (x= y= 6, x+y,x+1) A) (x= y= 6, x+y,x+1) B)(xB)(x= y= 6,x+y,y+1)= y= 6,x+y,y+1)C)C)(x= 6,x+1,y= 6,x+y) D) (y=6,y+l,x = y,x+1)(x= 6,x+1,y= 6,x+y) D) (y=6,y+l,x = y,x+1)4 4、设变量、设变量a a是整型是整型,f,f是实型是实型,i,i是双精度型是双精度型, ,则表达式则表达式10+a+i*f10+a+i*f值的数据值的数据类型为类型为 A)intA)int B) float C) double D) B) float C

52、) double D)不确定不确定A AC CC C5 5、设、设C C语言中语言中, ,一个一个intint型数据在内存中占型数据在内存中占2 2个字节个字节, ,则则unsigned unsigned intint型数型数据的取值范围为据的取值范围为: :A)A)0 0255 B) 0255 B) 032767 C) 032767 C) 065535 D) 065535 D) 0214748364721474836476 6、若有说明语句、若有说明语句:char c=72:char c=72则变量则变量c c A)A)包含包含1 1个字符个字符 B)B)包含包含2 2个字符个字符C)C)包含包含3 3个字符个字符 D)D)说明不合法说明不合法,c,c的值不确定的值不确定C CA A

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号