C语言程序设计第3章
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章数据运算
3.1 算术运算
3.2 自增(减)运算
3.3 关系运算
3.4 逻辑运算
3.5 赋值运算
3.6 逗号运算
3.7 条件运算
3.8 位运算
3.9 测试数据长度运算
习题3
1
本章学习要求:
1. 掌握C语言各种运算符的使用与优先级。
2. 掌握表达式的概念、运算符的优先级与结合性。
3. 不同运算符(算术、自增和自减运算符、关系、逻辑运算符等)的使用特点,清楚每种运算符的优先级与结合性。
2
4. 了解测试数据长度运算sizeof()。
运算符是告诉编译程序执行特定算术或逻辑等操作的符号。 C语言提供了很丰富的运算符,主要有以下几类:
(1) 算术运算符。
(2) 自增(减)运算符。
(3) 关系运算符。
(4) 逻辑运算符。
(5) 赋值运算符。
(6) 逗号运算符。
(7) 条件运算符。
3
(8) 位运算符。
(9) 测试数据长度运算符sizeof。
另外,C语言还提供了一些用于完成特殊操作的运算符。
由运算符和操作数所组成的式子,称为表达式。只需一个操作数的运算符称为单目运算符,需要两个操作数的运算符称为双目运算符。操作数可以是常量、变量、函数和子表达式,每个表达式都有唯一确切的值,求解表达式时要注意运算符的优先级及结合性。在下面各节内容中,将详细讲解各运算符及其运算表达式。
4
3.1 算术运算
算术运算是两个运算对象(也称操作数)之间的运算。表3.1列出了C语言允许的算术运算符。
在C语言中,运算符+、-、* 和 / 的用法与大多数计算机语言是相同的。它们几乎用于C语言中所有的数据类型。
5
表3.1 算术运算符
运算符名称例子运算功能
求a与b的和+ 加 a+b
- 减a-b 求a与b的差
b
求a与b的积
* * 乘 a
求a除以b的商/ 除 a/b
求a除以b的余数% 取余 a%b
6
说明:
(1) 当“/”被用于整型或字符型数据时,结果取整。例如:在整数除法中,10/3 = 3。
(2) 因为取余运算是取整数除法的余数,所以%不能用于除整型之外的其他类型的数据,要求%两侧均为整型数据,如7%3 = 1。
(3) 用算术运算符和括号将运算对象连接起来。符合C 语法规则的式子,称为C算术表达式。运算对象包括常量、变量、函数等。例如a + b/c * d,就是一个合法的C算术
表达式。
7
(4) C语言规定了运算符的优先级和结合性。在表达式求值时,先按照运算符的优先级别高低次序执行,例如先乘除后加减;如果一个运算对象两侧的运算符的优先级别相同,例如b/c * d,则按规定的结合方向处理。C语言规定,算术运算符的结合方向为 “自左至右”,即“左结合性”。
8
3.2 自增(减)运算
自增(减)运算是对一个运算对象施行的一种特殊的算术运算,即对一个运算对象进行算术运算之后,运算结果仍赋予该运算对象。因此,参加自增(减)运算的运算对象必须是变量。表3.2列出了C语言的自增(减)运算符。
9
表3.2 自增(减)运算符
运算符名称例子等价于
++ 自增 a++或++a a=a+1 --自减a--或--a a=a-1
10
说明:
(1) 参加自增(减)运算的运算对象必须是整型变量。2++或(a+3)--都是不合法的。
(2) 自增和自减运算符可用在运算对象之前(称为前置运算),也可放在其后(称为后置运算)。例如:
a = a + 1;可以写成a++;或++a;
a = a -1;可以写成a--;或--a;
11
(3) 当自增或自减运算符与运算对象变量组成的运算表达式单独组成一条语句时,无论是前置运算,还是后置运算,其结果是一样的,即都是使该变量的值增加1或减少1。例如:
int a=1;
a++;
即执行后变量a的值为2。
如果写成:
int a=1;
++a;
则执行后变量a的值仍为2。
12
(4) 当自增或自减运算符与其他运算符混合使用时,前置和后置用法是有区别的。
前置运算:自增或自减运算符在变量之前,C语言先执行对该变量的加1或减1操作,然后引用变量的数值作为整个自增或自减表达式的值。后置运算:自增或自减运算符在变量之后,C语言先引用变量的数值作为整个自增或自减表达式的值,然后执行对该变量的加1或减1操作。例如:
13
int a=1;
printf(“%d”, a++);
即执行后变量a的值为2,输出为1。
如果写成:
int a=1;
printf(“%d”,++a);
则执行后变量a的值仍为2,输出为2。
可以看出,无论是前置运算还是后置运算,对自增或自减运算的对象变量而言,都要执行一次自增或自减运算,效果是一致的。所不同的是,自增或自减运算表达式的取值是变量自增(减)之前的值,还是变量自增(减)之后的值。
14
(5) ++和--的结合方向是“自右至左”。
在大多数C编译程序中,为自增和自减运算符生成的程序代码比为等价的赋值语句生成的代码运算速度要快得多,因此尽可能采用++或--运算符是一种比较好的程序设计做法。
15