鸣小亮c语言笔记(1)——运算符与表达式
1.根据运算符性质分类:
算术运算符,关系运算符,逻辑运算符,赋值运算符等。
2.根据操作数的个数进行分类:
仅仅需要一个操作数的个数的运算符为单目运算符;需要两个操作数个数的为双目运算符;同理,三目运算符需要三个操作数。
运算符和运算对象(操作数)按一定规则结合在一起就构成了表达式。
1 . 两个整数做除法运 算,结果仍为整数,舍去小数部分的值。例如:
6/4=1
在这里6/4的结果的小数部分就已经被舍去了;但当参与运算的操作数只要有一个是实型数据,则结果就为double型。例如:
6/4=1.5
3. c语言中的相乘只能用 * 表示,不能把 * 省略,或者用X表示。
4. 数学表达式在书写中会出现“【】”和“{}”表示运算顺序,但在c语言表达式中式不允许的。例如:
[(a+b) * c]/(2/a)
5. 表达式中出现了c语言不允许的标识符。例如:
2 * π * r是错误的,应该表达成 2 * 3.14159 * r
或者先定义符号常量PI:
#define PI 3.14159
则表达式可以写成:
2 * PI * r
6. 算术运算符优先级与结合性:
变量名=表达式
1. “=”右边为任何合法的表达式,也可以是另一个赋值表达式,即“=”可以连用。如:
a=b=c=d=3;
2. “=”左边只能是变量,不能是算术表达式或常量。例如:
45+x=100
45=x+y
涉及算术运算的复合赋值运算符共有5个:+=,-=,*=,/=,%=;
涉及位运算的赋值运算符共有5个:&=,|=,^=,<<=,>>=。
当复合运算符右侧是一个表达式时,由c语言编译系统给该表达式自动加括号,即先计算这个表达式的值,再进行复合赋值运算。
2++
(a+b)++
2. ++和--的结合方向都是自右向左。例如:
3. 一行语句中最好出现一次增1或减1运算,因为过多的增1,减1混合运算会使程序的可读性变差。
a=3,b=2,c=1,a>b>c
先计算关系表达式a>b,成立,所以用1表示;再计算1>c,不成立(为假),所以用0表示。因此,最后结果为0。
用逻辑运算符连接操作数组成的表达式称为逻辑表达式。逻辑表达式的值只有真和假,用1表示真,用0表示假。
表达式1?表达式2:表达式3
该表达式执行过程是什么样的呢?
1. 先求第一个表达式的值。
2. 当第一个表达式值不为0时,求第二个表达式的值;当第一个表达式值为0时,求第三个表达式的值。
3. 条件表达式的结果是上步所求的第二个或第三个表达式的值。例如:
x>y?100:500;
强制类型转换运算符可以把表达式的结果硬性转换为一个用户指定的类型值。他是一个单目运算符。例如:
(int)9.3
是将double类型的常量强制性转换为int类型的常量,结果值为9。
逗号表达式按照从左向右的顺序逐个求解表达式,而整个表达式的值就是表达式n的值。例如:a=1,++a,a+10;
首先求解表达式1,a的值被赋值为1,
第一期笔记到这里就结束了,我们下期再会!