C语言操作符总结归纳

操作符分类:

1、算操作符

2、移位操作符

3、位操作符

4、赋值操作符

5、单目操作符

6、关系操作符

7、逻辑操作符

8、条件操作符

9、逗号表达式

一、算数操作符
操作符名称解释形式
+   加    两数相加X+Y
-两数相减X-Y
*两数相乘X*Y
/两数相除取商   X/Y
%取余两数相除取余数X%Y
加减乘除我们再熟悉不过了,这里要注意的是进行除运算和取余运算过程中容易出现的问题:
1,对于/操作符,如果两个操作数都为整数,则执行的是整数除法,但只要有浮点数则一定执行的是浮点数除法。

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

二、移位操作符

1,      <<     左移操作符

解释:  按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零

需要注意的是这里移位的是整型数,浮点数不能左移。


2,    >>    右移操作符

解释:按二进制形式把所有的数字向右移动对应位移位数

右移位操作符又分为两种:

                                         a,算术右移

                                         算术右移,右边丢弃,左边补符号位

                                         b,逻辑右移

                                          逻辑右移,右边丢弃,左边补0


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

eg:   

int   num=10;
 num>>-1;//error

三、位操作符

 

操作符名称解释形式(二进制)
&按位与两个同时为1才为11100&0110=0100
|按位或有一个为1则为11100|0110=1110
^按位异或相同为0不同为11100^0110=1010

注意:

1,它们的操作数必须是整数。

2,任何数&1结果如果是1,这说明这个数的最低位为1;如果是0,这说明它的最低位为0。

3,任何数^它本身结果为0

4,任何数^0结果是它本身

四、赋值操作符

赋值运算符的符号为=,是我们写代码不可缺少的操作符,几乎每个代码中都用到了赋值运算符,这里不多做解释,说一下复合赋值符,包括以下:

1,           +=      -=         *=          /=             %=

2,            >>=             <<=

3,            &=       |=            ^=

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

int x=10;
x=x+10;
x+=10;
其他运算符和它一样,这样写更加简洁。

五、单目操作符

单目运算符包括以下几种:

!           逻辑反操作

-             负值

+            正值

&           取地址

sizeof    操作数的类型长度

~           对一个二进制数按位取反

--          前置、后置--

++        前置、后置++

*            间接访问操作符(解引用操作符)

(类型)强制类型转换

前面四种相信大家都很熟知,主要说后面的操作符:

1,sizeof

很多同学将其误认为是一个函数,其实它是一个操作符,从以下代码中我们可以清楚的看到:

int  num=0;
sizeof(num);//4
sizeof  num;//4

我们可以看到sizeof后面没有带括号的时候仍然可以正确的输出,说明它并非是个函数。但切忌出现以下代码:

int num=0;
sizeof(int);//4
sizeof  int;//error

sizeof后面直接用类型时一定要带括号,虽然第一种也是对的,但不提倡使用它。毕竟我们写代码是为了让别人更直观的看懂我们的代码。

需要注意的是sizeof内部表达式不参与运算。

2,++,--

这两个操作符都有前置和后置之分,但道理是一样的

比如m=++i;的意思就是先给i自身加1然后再将加完之后的值赋给m,相反的m=i++;是先将i的值赋给m之后再给i自身加1;--也是相同的道理。

总结一下:++或--在前即先+或-再赋值;++或--在后即先赋值后+或-。

六、关系操作符

·   >

·   <

·   >=

·   <=

·   ==

·   !=

这些都比较简单,需要注意的是最后两个:

==切忌以下代码:

int x=get_value();
if(x=5)
刚开始很多人都会犯这样的错误,是因为我们在数学中的习惯,一个=表示赋值,两个=才是真正的=,条件判断的时候一定不能写成上面的代码。!=与我们在数学中也是不一样的。

七、逻辑操作符

操作符名称解释
&&逻辑与两个表达式都为真才是真,有一个假则是假
||逻辑或有一个表达式为真则为真,两个都为假则是假

区分逻辑与和按位

1&2——>0       二进制与

1&&2——>1       两个都是非0则为真

区分逻辑或和按位或

1|2——>3

1||2——>1

八、条件操作符

exp1:exp2?exp3

表示如果exp1位真则执行exp2,如果exp1为假则执行exp3,例如以下代码:

if(age<18)
else  printf("已成年");

则以上代码可以等价于以下代码:

age<18:printf("未成年")?pritf("已成年")

九、逗号表达式

exp1,exp2,exp3,......,expN

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

举个栗子:

int a=1;
int b=2;
int c=(a>b,a=b+10,a,b=a+1);
printf("%d",c);

没错,它的结果是13,首先执行表达式1,a>b虽然是假的但是不影响,然后执行表达式2  a=b+10,这时候a就变成看12,最后执行表达式3   b=a+1;那么b的的结果自然就是13了,然后把13赋给c,那么c的值的确是13。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值