C语言操作符

一、前言

操作符是我们学习C语言算法的必须要掌握的知识。

二、算术操作符

符号用途用法
/取商的操作符a/b
%取余数的操作符a%b

注:a、b表示操作数,下同

例如a/b,实际上的结果a除b得到的商。
特别注意:默认是整数,如果想得到浮点型(小数)的结果,那么我们讲a或b任意一个换成浮点型就行。
例如a%b,实际上的结果是a除b得到的余数。
特别注意:%的操作数不能为浮点型的数

三、位移操作符

符号用途用法
<<左移(移动的是二进制位)a<<1
>>右移(移动的是二进制位)a>>1

特别注意:1.右移分为两种:I.算术右移(常见编译器采用的)右边丢弃,左边补上最高位的符号位
–———————————— II.逻辑右移右边丢弃,左边补0
–———— 2.左移就一种:左边丢弃,右边补0
–———— 3.移动时不能是负数,因为在编译器里面这是未定义的操作
补充:正数的原反补码是一样的;负数的原反补是有自己的规则的,内存里面的存储的是补码,打印函数是打印的数据的原码,判断计算的时候是用的数据的原码,最高位是数据的符号位
例如:10000000000000000000000001——>-1原码
———111111111111111111111111111110——>补码(符号位不变,其他位按位取反)
———111111111111111111111111111111——>反码(在补码的基础上+1)

四、位操作符

符号用途用法
&按位与a&b
|按位或a|b
^按位异或a^b

注:这里的位都是二进制位,且它们的操作数必须是整数

&与:两个都为1,才能为1
|或:一个为1,就能得到1
^异或:相同为0;不同为1
例如:

int a=3;//00000000000000000000000000000011
int b=5;//00000000000000000000000000000101
a&b;//    00000000000000000000000000000001
a|b;//    00000000000000000000000000000111
a^b;//    00000000000000000000000000000110

五、赋值操作符

符号用途用法
=赋值a=1

特别注意记得区分“=”与“==”

六、复合操作符

符号用途用法
+=加等a+=1
-=减等a-=1
*=乘等a*=1
/=商等a/=1
%=余等a%=1

我们可以根据等价形式理解
a+=1等价于下列代码

a=a+1;

七、单目操作符

单目操作符:只有一个操作数的

符号用途用法
取反!0
-负数-1
+正数+1
&取地址操作符&a
*解引用操作符*pa
sizeof求数据的大小sizeof(a)
++/- -加法减法a++/++a
()强制类型转换(int)a
~按位取反~0

注意:sizeof计算变量的大小
1.sizeof可以根据变量名计算例如sizeof(a),也可以用数据类型计算sizeof(int)进行计算
2.还可以省略括号,sizeof(a)等价于sizeof a,但是sizeof int是不行的
3.还有一个特别的,变量int arr[10]={0};用sizeof(arr)可以计算,利用数据类型的时候是sizeof(int [10])。
==sizeof(表达式),表达式时不直接运算的(sizeof里面的表达式不会对变量进行修改)
例如:

short s=0;
int a=0;
printf("%d",sizeof(s=a+5));里面关于s的表达式,出了这条语句没用
printf("%d",s);//此时s仍然是0

注意:++/- -;
前置++/- -,后使用
后置先使用,后++/- -
注意
在这里插入图片描述

八、关系操作符

这一类操作符都是判断相不相等与比较大小

符号用途用法
==判断相等a==1
!=判断不等a!=1
<=小于等于a<=1
>=大于等于a>=1
<小于a<1
>大于a>1

九、逻辑操作符

符号用途用法
&&逻辑与a&&b
||逻辑或a||b

计算的特点
&&左边算的结果是假,右边直接不用算了
||的特点和&&是互补的:所以||左边的算出来是真,右边不用算了
代码如下:

i=a++&&b++&&++c&&d++;
i=a++||b++||++c||d++;

十、条件操作符(三目操作符)

符号用途用法
? :判断条件exp1?exp2:exp3

用等价的方法理解

a>b?a:b;

等价于

if(a>b)
a;
else
b;

十一、逗号表达式

符号用途用法
,,,逗号隔开多个表达式,从左向右一次执行,整个表达式结果是最后一个表达式的结果exp1,epx2,exp3,…expN

十二、下标引用操作符、函数调用、结构成员

符号用途用法
[]数组的下标[1]
()函数调用game()
.结构体访问结构体变量名.成员名
->结构体访问结构体指针名->成员名

注意
[]:下标引用操作符,有两个操作数。
举例认识;arr[5]=10;此时一个操作数是arr数组宁外一个是10索引值
():函数调用操作符,并非所有的()都是函数调用操作符
区分两个
int main(int x,int y)//此时是函数定义的语法规则
int max=get_max(a,b)//这个才是函数调用操作符

补充结构体:
在这里插入图片描述
在这里插入图片描述

1.'.‘在结构体里面访问成员,上述代码中是s1.age
2.’->'在结构体里面访问成员,上述代码中是ps->age

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

含目的基因的质粒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值