1算数操作符号
+、 -、 *、 /、
+和-用来完成加法和减法
例如
例如
运算符*用来算乘法
例如
运算符/用来算除法
除号两端都是整数,执行除法,则结果也是整数
上面示例中,尽管变量x的类型是float(浮点数),但是6 / 4得到的结果是1.0,而不是1.5。原因就在于 C 语言里面的整数除法是整除,只会返回整数部分,丢弃小数部分。
如果希望得到浮点数的结果,两个运算数必须至少有一个浮点数,这时 C 语言就会进行浮点数除法。
则 3.0/2 结果就为1.5了。
再介绍一下%
运算符%表示求模(余)运算,即返回两个整数相除的余值。这个运算符只能用于整数,不能用于浮点数。
2 赋值操作符:=和复合赋值
在变量创建的时候给一个初始值叫初始化,在变量创建好后,再给一个值,这叫赋值。
如下
在C语言当中提供了更简便的算法
同理还有a-=3代表a=a-3
这里是C语言中的符合赋值符号
3.单目操作符
3.1++和--
++是一种自增的操作符,又分为前置++和后置++;--是一种自减的操作符,也分为前置--和后置--。
++代表自己自身加1
3.1.1前置++
计算口诀:先+1,后使用;
3.1.2后置++
计算口诀:先使用,后+1
3.1.3前置--
如果你听懂了前置++,那前置--是同理的,只是把加1换成了减1。
计算口诀:先-1,后使用
3.1.4后置--
计算口诀:先使用,后-1
4.移位运算符
4.1 左移<<
左移规则:左边抛弃、右边补0
| 0000 1010 二进制表示10 |
左移后变成
| 0001 0100 二进制表示20 |
左移两次变成
| 0010 1000 二进制表示40 |
左移1次 相当于10乘2
左移2次 相当于乘10乘2*2
小结:关于带符号整数左移
- C语言标准规定导致符号位改变的带符号整数的左移操作属于“未定义行为” (Undefined Behavior, UB)。
- C标准不保证结果一定是那个负数值。
- 编译器可以做任何处理,包括产生一个警告、得到预期的负数值、得到一个完全意外的值,甚至在某些极端情况下导致程序崩溃。
4.2 右移>>
右移规则:左边用原该值的符号位填充,右边丢弃
大白话:左边补符号位,符号位原来是1就补1 原来是0就补0。
此时为正数,符号位是0,结果是:5
此时为负数,符号位是1,结果仍然是:-1
5. 位操作符
5.1& 按位与
int num1 = -3; 1000 0011 原码 反码 1111 1100 补码 1111 1101
1111 1101
int num2 = 5; 0000 0101 只要比特位上有0,按位与的结果就为0
int num1 & nmu2 0000 0101 二进制代表5
5.2|按位或
int num1 = -3; 1000 0011 原码 反码 1111 1100 补码 1111 1101
1111 1101
int num2 = 5; 0000 0101 只要比特位上有1,按位与的结果就或1
int num1 | nmu2 1111 1101 二进制代表-3
5.3^按位异或
int num1 = -3; 1000 0011 原码 反码 1111 1100 补码 1111 1101
1111 1101
int num2 = 5; 0000 0101 对应比特位上一样用0表示,不一样用1表示。
int num1 ^ nmu2 1111 1000 二进制代表-8
特殊 n^n=0 两个数字一样异或出来就是0
0000 0001
0000 0001
----------------
0000 0000 等于0
0^n=n 0和任何数异或出来都为本身
0000 0000
0000 0001
------------------
0000 0001 等于本身
5.4~按位取反
int num1 = -3; 1000 0011 原码 反码 1111 1100 补码 1111 1101
1111 1101
int num2 = ~num 1 0000 0010 按位取反后的补码 代表2
6.逗号表达式
逗号表达式规则
逗号表达式,就是用逗号隔开的多个表达式。
逗号表达式会从左向右依次计算所有子表达式,整个表达式的最终结果是最后一个子表达式的结果。
7. 关系运算符
> 、>= 、< 、<= 、 == 、 !=(大于 大于等于 小于 小于等于 等于 不等于)
关系运算符用于比较表达式。如果关系为真,则结果为1;如果为假,则结果为0。我们将在选择结构中重点讲解其应用。
例如
8. 逻辑运算符
🧠 逻辑运算符
逻辑运算符包含:逻辑与:&&、逻辑或:||、逻辑非:!。
这些运算符通常与关系运算符结合使用,用于构建更复杂的条件判断,我们将在后续的“选择结构”章节中详细讲解。