关于C语言的运算符和表达式
学好C语言的基础运算,还是很有必要,无论在C语言,还是后面
单片机,都会用到基础运算。如果不能很好运用,会给我们编程带来很多麻烦,废话不多说,现在开始写一些个人见解!
1:赋值运算
利用赋值运算将一个变量和一个表达式连接起来的式子为赋值表达式,在表达式后面加上“;”,就过程表达式语句。使用“=”的赋值语句如下:
变量= 表达式;
例如: a = 0x10; //将常数十六进制的10赋值变量a;
f= d-e;//将d-e的值赋于变量f;
赋值语句的意义就是先计算出“=”右边的表达式的值,然后将得到的值赋给左边的变量。
2:算术运算
A:算术运算符和算术表达式
C51中的算术运算符有如下几个,其中只有取正值和取负值运算符是单目运算符,其他则是双目运算符;
一:算术运算符:
1): + (加法运算符,或正值符号)
2): - (减法运算符,或取负值符号)
3): * (乘法运算符)
4): / (除法运算符)
5): % (模(求余)运算符,例如5%3结果是5除以3所得的余数2)
二:算术表达式
用算术运算符和括号将运算对象连接起来的式子为算术表达式。运算对象包括常量、变量、函数、数组、结构体等;算术表达式的形式:
表达式1 算术运算符 表达式2
例如:a+b,(x-4)/(y-b),y-sin(x)-2
小知识点:除法(/)、求余(%)一般用于数的数位分离,如123位分离如下:
uchar a,b,c;
a=123/100=1;
b=123%100/10=2;
c=123%100%10=3;
三:算术运算的优先级与结合性
算术运算符的优先级规定为:先乘除模,后加减,括号最优先。
3:关系运算
1:关系运算符
1): < (小于)
2): > (大于)
3): <= (小于或等于)
4): >= (大于或等于)
5); == (等于)
6): !=(不等于)
关系运算符同样也有有限级别,前4个具有相同的优先级别,后2个有具有相同的优先级,但前面4个优先级高于后面两个。关系运算符的结合性为左结合。
2:关系表达式
关系表达式就是用关系运算符连接起来的两个表达式。关系表达式通常是用来判断某个条件是否满足。要注意的是关系表达式结果只有0和1两种,也就是逻辑的真和假。当指定的条件满足结果为1,反之为0;
关系表达式结果如下:
表达式1 关系运算符 表示式2
例如:
1): a>b: //假如a大于b,则表达式为1(真)
2): b+c
4:逻辑运算
关系运算符反映两个表达式之间的大小关系。逻辑运算符则用于求条件式的逻辑值。用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。
1): && 逻辑与
2): || 逻辑或
3): ! 逻辑非
逻辑表达式的一般形式为:
逻辑与: 条件1 && 条件2
逻辑或: 条件1 || 条件2
逻辑非: !条件
逻辑表达式的结合为自左向右。逻辑表达式的值应该是一个逻辑值“真”或“假”,以0代表假,以1代表真,不可能是其他值。
5:位运算
在C51中提供6中运算符:
1): | 按位或 优
2): ^ 按位异或 先
3): & 按位与 级
4): 《 位左移 上
5): 》 位右移 到
6): ~ 按位取反 下
位运算符的作用是按位对变量进行运算,但没有改变参与运算变量的值。如果像改变参与按位变量的值,则需利用相应的赋值运算,注意,位运算不能对浮点型数据进行运算。
位运算一般表达式形式如下:
变量1 位运算 变量2
位运算的优先级,如上图:按位与(|)----》按位异或(^)----》按位与(&)----》右移(>>)----》左移-(<<)---》取反(~)。
位取反,运算符“~”来对于一个二进制数按位进行取反,即0变1,1变0;
位左移和位右移,用来往左移动若干位,移位后,空位补0,溢出舍弃。
总结:
1:自增减运算:
自增运算”++“和自减”--“,使变量值自动加1和减1。自增运算和自减运算智能用于变量而不能于常量表达式。注意:”++“和”--“的结合方向,自右向左。
例如:
++i; //在使用之前,先使i值加1;
--i; //在使用之前,先使i值减1;
i++; //在使用之后,先使i值加1;
i--; //在使用之后,先使i值减1;
2:复合运算
复合赋值运算就是在赋值运算符”=“的前面家撒谎能够其他运算符。
以下是C51语言中的复合赋值运算运算符:
+= 加法赋值 <<= 左移为赋值
-= 减法赋值 >>= 右移位赋值
*= 乘法赋值 &= 逻辑与赋值
/= 除法赋值 |= 逻辑或赋值
%= 取模赋值 ^= 逻辑异或取值
复合运算的一般形式: 变量 复合赋值运算符 表达式
例如:
a+=3等价于a=a+3;
3:逻辑运算符、关系运算符、算术运算符、赋值运算符之间优先级次序如下:
!(非) 高
算术运算符
关系运算符 优先级
&&和||
赋值运算符 低
就到这里,还有三目运算和逗号运算,这里就不详说,有不懂联系我!