一篇文章带你了解C语言操作符

一、操作符分类

C语言的操作符有很多,我这里将其分为十类,然后再对每一类中的操作符进行详细讲解。

1、算术操作符

2、移位操作符

3、位操作符

4、赋值操作符

5、单目操作符

6、关系操作符

7、逻辑操作符

8、条件操作符

9、逗号表达式

10、其它操作符

 二、算术操作符

B779F5C4-16D7-6681-070B-39D2FDE964E8.png

1、这五个操作符分别是加、减、乘、除、求余。

2、对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除 法。

3、除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。% 操作符的两个操作数必须为整数,返回的是整除之后的余数。

三、移位操作符

A83CC622-5195-ED56-CB18-64C12000BBCC.png

左移操作符和右移操作符操作的对象都是二进制数。

1、左移操作符

左移操作符的移位规则是:左边抛弃,右边补0。

2A0D4196-9606-DA6D-3C44-0D355AC81FCF.png

但是num没有被赋值的情况下,自身的值不会发生变化

3B383E9E-B331-9A12-B233-56FEAFCE4872.png

 2、右移操作符

右移操作符移位规则有两种:

2.1算术移位

左边用原该值的符号位填充,右边丢弃

6CE09575-53D5-8D6D-86CE-113DA91D5290.png

2.2逻辑移位

左边用0填充,右边丢弃

CC509601-188D-1137-CCD1-7EC6AFA247C5.png

注意: 对于移位运算符,不要移动负数位,这个是标准未定义的。

AE4213AC-89F4-3C0C-D78F-95C5397DB684.png

 四、位操作符

2709E16B-162E-E920-1C55-CE2EFF1BF42E.png

 1、按位与

B962D02A-615B-4C78-9D88-8C00B692B711.png

 2、按位或

AFF3C6F1-0A52-762F-3A01-207394E4FF6E.png

3、按位异或

7372F10A-507A-0EF0-19E0-91D4DB6DDA77.png

 4、一道练习题

不能创建临时变量(第三个变量),实现两个数的交换

80C33977-2430-F8C3-73A9-6568CFB664A8.png

两个相同的数异或为0.

 五、赋值操作符

1、赋值操作符(=)是一个很棒的操作符,他可以让你得到一个你之前不满意的值。也就是你可以对其重新赋值。

99A98E4A-43D1-6F6C-907A-2BCA304AA18A.png

2、赋值操作符可以连续使用

41AD5F53-8946-DF05-8149-1A0FABF25784.png

3、复合赋值符

8343A42F-1AB1-7C66-C397-067847E5A53B.png

这些运算符都可以写成复合的效果。

例如:

39CCE1DF-7045-0C35-BAA7-B9DDDE5C1BAA.png

六、单目操作符

4DC8F25A-B2E6-F5CA-F862-9E5F978BB04D.png

 1、逻辑反操作

加上!与之形成相反的逻辑,例如=,加上!变为不等于。一个非零的值加上!输出为0。

7F92D5EB-F909-721A-5AFE-5BA6D85139C3.png

 2、取地址

8E9DC474-95C4-540E-4E8A-5840E6EB8F21.png

 3、sizeof

sizeof可以计算操作数的类型长度(以字节为单位)

9ADE7FA6-3AE6-DA65-1938-628734ACFD5B.png

 4、++和--运算符

4.1前置++和--

9F4977BB-4A30-CA8D-536F-8B3E2BBC6004.png

4.2后置++和--

EFE72FCF-5697-A848-E135-F268CF29B75F.png

 七、关系操作符

38802950-EA40-EA9F-F471-09D44AFC6824.png

这些关系运算符比较简单,没什么可讲的,但是我们要注意一些运算符使用时候的陷阱。

要注意: 在编程的过程中== 和=不小心写错,导致的错误。

八、逻辑操作符

&& 逻辑与

|| 逻辑或

这里要注意区分逻辑与和按位与 、逻辑或和按位或。

3217D75E-8FB4-3271-B38A-0E7EE8F7EE15.png

逻辑与和或的特点:

20D2EBD8-691D-A750-6EC6-49E0210AC98D.png

当a=0,0&&任何数都为0,已经确定结果,后面的算式不再计算

9BEF736A-16F7-807A-8D1B-FAEDD64FCB60.png

 九、条件操作符

exp1 ? exp2 : exp3

86326C41-89B8-B2F3-A317-B592F5D346C7.png

2BB705F7-3B0D-DA8D-320E-F698872D800F.png

上面两种写法的逻辑是相同的。

十、逗号表达式

exp1, exp2, exp3, …expN

逗号表达式,就是用逗号隔开的多个表达式。

逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

043E91B8-7283-E9A3-E47D-9E08068D3AEA.png

 十一、其它操作符
1.下标引用操作符[ ]

操作数是一个数组名 + 一个索引值

DF4DCF88-8BB4-BC60-BB99-673BC2900540.png

2.函数调用操作符( )

接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。

8F2253AD-DBCF-FEE5-19A9-78A160BA5380.png

3.访问一个结构的成员

. 结构体.成员名

-> 结构体指针->成员名

7C60A96C-B74B-1EC3-78B6-4E260D4AF416.png

收藏 (0)
评论列表
正在载入评论列表...
我是有底线的
为您推荐
    暂时没有数据