一篇文章带你了解c语言常用的运算符

目录

一:了解运算符的优先级

二:部分运算符介绍

(1)初级运算符包括:

(2)关系运算符包括:

(3)逻辑运算符

(4)赋值运算符​

(5)算术运算符

(6)位运算符(&,|,^,~,>> ,<<)

①与(&)

 ②或(|)

③异或(^)

 ④按位取反(~)

⑤>>右移  <<左移


一:了解运算符的优先级

运算符优先级记忆的原则为:

1.从整体优先节的角度来说:初级运算符>单目运算符>双目运算符>逗号运算符。

2.所有赋值运算符优先级均为一致,唯有逗号运算符低于赋值运算符。

3.其他双目运算符的优先级。

算术运算符 >移位运算符> 关系运算符> 按位运算符> 逻辑运算符

运算符的结合性规律就是顺序,除了单目运算符,三目运算符,赋值运算符三种是从右往左以外,剩下的都是从左往右。

二:部分运算符介绍

(1)初级运算符包括:

() 圆括号;[ ]下标运算符;. 结构体或类的成员运算符;->指向结构体或者类的成员运算符

(2)关系运算符包括:

设X=1,Y=2,则

==: 检验两数是否相等,相等为真,即(X == Y)为假

!=: 检验两数是否相等,不相等为真,即(X != Y)为真

>,<,>=,<=与数学上的原则一致

(3)逻辑运算符

设X=1,Y=0,则

&&:如果两个数据都为非0,则为真,即(X&&Y)为假

|| :如果有一个数据都为非0,则为真,即(X||Y)为真

!:逆转逻辑状态,假假为真,即 !(X&&Y)为真

(4)赋值运算符

(5)算术运算符

即:+   -    *    /   %    ++    --

+ - * /与数学上的表达式与方法一致

%:即表示整除后余数,实例:5 % 2  = 1,5 / 2的结果为商2余1,实例代码如下:

#include<stdio.h>
int main()
{
    int n = 5;
    int y = 2;
    printf("5 / 2 = %d\n",n/y);/*(int类型取整,则:5/2=2.5,取整数部分2)如要打印5/2=2.5可写
    printf("5 / 2 = %f\n",float(n) /float( y));*/
    printf("5 % 2 = %d\n",n%y);           
    return 0;
}

 输出结果为:

 ++:x++相当于x+1

  --:x--相当于x-1

(6)位运算符(&,|,^,~,>> ,<<)

位运算符:是对二进制位数进行的一种逻辑运算,它包括“与”“非”“或”“异或”"右移"
"左移"六种

①与(&)

与(&):操作数中的两位中位数都为1,那么结果才为1,反之为0,可看作求相同的部分

如:5&10{5的二进制为101,10的二进制为1010,二者相同部分为0000,输出0};

 5&13{13的二进制为1101,二者相同部分为101,则输出5};代码实例如下图:

 ②或(|)

或(|):操作数中的两数二进制只要有一位为1,那么二进制对应位数结果就为1,反之为0。

如:5&10{5的二进制为101,10的二进制为1010,则根据“有一则一”得到1111,输出15};

 5&13{13的二进制为1101,则根据“有一则一”得到1101,输出13}代码实例如下图:

③异或(^)

异或(^):操作数中的两数二进制对应位数相同为0,反之为1。

如:5&10{5的二进制为101,10的二进制为1010,则根据“同0异1”得到1111,输出15};

 5&13{13的二进制为1101,则根据““同0异1”得到 1000,输出8}代码实例如下图:

 ④按位取反(~)

按位取反(~):一位数的二进制中,将二进制中所有的位数取反

如:5的二进制源码是0000000000000000000000000000000101按位取反得到111111111111111111111111111111010,则为一个负数,因为int操作的是补码,则有反码为:1000000000000000000000000000000101,由补码等于反码+1得到,1000000000000000000000000000000110则输出-6;(大致可以记作正数按位取反则改变符号,数字加一,表示为~(c)=-(c+1)  [c>0])

-5的二进制源码为1000000000000000000000000000000101,对-5的补码:111111111111111111111111111111011按位取反得到0000000000000000000000000000000100,则为一个正数,整数原反补码三码相同,则输出:4;(大致可以记作负数按位取反则改变符号,数字减一,表示为~(-c)=-(c-1)   [c>0])

代码实例如下图:

源码,反码,补码的相关内容具体可查看计算机原理

⑤>>右移  <<左移

移位运算符:把位按指定的值向左或向右移动

<< 向左移动 而 >> 向右移动,超过的位将丢失,而空出的位则补0

如:5的二进制码为101,则2<<1则为1010,输出10,2>>1则为010,输出2

代码实例为:

 负数的右移,就是补码高位补1,然后按位取反加1即可; 负数的左移,就是补码低位补0,然后按位取反加1即可;

如求-5>>2:

-5的补码为111111111111111111111111111111011向右移动两位高位补1有111111111111111111111111111111110,按位取反加一得到:10000000000000000000000000001加一得到10000000000000000000000000010即输出-2;

求-5<<2:

-5的补码为111111111111111111111111111111011向左移动两位低位补0有

111111111111111111111111111101100,按位取反加一得到:10000000000000000000000010011

加一得到10000000000000000000000010100即输出-20

代码实例为:

码字不易,点个赞吧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值