2.1.2.2-C语言中运算符的定义与应用
C语言算数运算符
运算符 | 名称 |
---|---|
+ | 加法运算符 |
- | 减法运算符 |
* | 乘法运算符 |
/ | 除法运算符 |
% | 求余运算符 |
++ | 自增运算符 |
– | 自减运算符 |
a和a的不同:
1 | a++是先参与运算再自增,++a反之。 |
C语言关系运算符
运算符 | 名称 | 备注 |
---|---|---|
> | 大于 | |
< | 小于 | |
>= | 大于等于 | 常见错误:=> |
<= | 小于等于 | 常见错误:=< |
== | 等于 | |
!= | 不等于 |
特别说明:
1 | = 表示的是赋值 |
关系运算符的使用
在关系运算中,0为假,其他数字都为真。
一般情况下配合if语句使用
1 | if(关系运算符的表达式) |
如果关系运算符为真 则执行语句1
关系运算符的表达式成立 -> 运算结果为真 -> 返回1 -> 执行语句1
关系运算符的表达式不成立 -> 运算结果为假 -> 返回0 -> 不执行语句1
有时也在while语句中使用
1 | while(关系运算符表达式) |
如果关系运算符为真 则执行语句1
关系运算符表达式成立 -> 运算结果为真 -> 返回1 -> 执行语句1
关系运算符表达式不成立 -> 运算结果为假 -> 返回0 -> 不执行语句1
C语言位运算符
C语言中六种位运算符
‘&’ 按位与(0对输出有影响,直接置0)
运算规则:
1 | a&b = 1 & 1 = 1; |
例:
1 | a & b = 0000 0110 & 0000 0101 = |
‘|’ 按位或(1对输出有影响,直接置1)
运算规则:
1 | a | b = 1 | 1 = 1; |
例:
1 | a | b = 0000 0110 | 0000 0101 |
‘^’ 按位异或(相当于不带进位的二进制加法)
运算规则:
1 | (a、b不同时为1,相同时为0) |
例:
1 | a ^b = 0000 0110 | 0000 0101 |
‘~’ 取反
规则:
1 | a = 0 ~a = 1; |
例:
1 | a = 6 = b0000 0110 |
‘<<’ 左移
1 | unsigned char a; |
b = a << 1 = 0x0c = 12;
‘>>’ 右移
1 | unsigned char a; |
a = 0000 0110 = 6;
由于 0000 0011 = 3;
则 b = a>>1 = 3;
对于b = a>> 2
有0000 0001 = 1;
Ps:无论是左移还是右移,溢出的一位舍去,是否溢出要看变量的类型,因为变量的类型决定着变量有多少位。
位运算符的运用
以下代码块利用上面的位运算符达到控制任务顺序的目的
1 | dat = 0xAA; //b1010 1010; |
1010 1010 << 1
得到0101,0100
C语言逻辑运算符
‘&&’ 与运算
常见应用场景:
1 | if(表达式1 && 表达式2 && 表达式3 ...) |
只有当表达式1、表达式2、表达式3都为真的时候(都成立时),执行语句1;否则不执行语句1。
‘||’ 或运算
常见应用场景:
1 | if(表达式1 || 表达式2 || 表达式3 ...) |
当表达式1,表达式2和表达式3至少有1个为真时,执行语句1。
‘!’ 非运算
例:
1 | bool a; |
常见应用场景:
1 | if (!变量a) |
- 当变量a为0时,!a 为真 执行表达式1
- 当变量a非0时,!a 为假 不执行表达式1;
C语言赋值运算符
1 | a += b; // 等价于 a = a+b; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 MagicConch's Blog!
评论
GiscusLivere