C语言运算符

C语言运算符有:

算术运算符、关系运算符、逻辑运算符、移位运算符、单目运算符等。

算术运算符

 +、-、*、/、%、++、--。

顾名思义

+——加法运算,-__减法运算,*__乘法运算,/__除法运算,%__求余运算。

在使用算术运算符过程中要认识到数据类型的转换规则,如图所示

横向箭头表示低精度数据类型在进行运算时运算结果的数据类型强制向高精度数据类型转换。

纵向箭头表示在数据类型在进行运算时,如果运算结果超出数据类型存储范围,运算结果数据类型会向高精度数据类型转换。

算数运算符优先级

*、/、%优先级高于+、-

例如: a+b*c,执行完b*c后在与a相加

算术运算符遇到同优先级运算符时,按从左往右的方法进行计算。

例如:a*b/c%a,依次从左往右执行。

关系运算符

> 、<、 >=、 <=、 ==、 !=

运算符两端值进行判断,判断结果为真输出1,判断结果为假输出0。

例如:

int a=100,b=50,c=0;

c=a>b;若a大于b结果为真,则c=1,否侧c=0;

c=a<=b;若a小于等于b结果为真,则c=1,否侧c=0;

逻辑运算符

&&、||、!

逻辑与&&,有0出0,全1出1

逻辑或 | | ,有1出1,全0出0

逻辑非  !  ,0为假 非0为真 

在进行逻辑与运算时一端为假则结果为假,不会再执行另一端表达式。

例如:int a=100,b=50,z=0;

z=a<b&&b++;a<b为假,逻辑表达式值为0不在执行b++。最终结果得z=0,b=50

 在进行逻辑或运算时一端为真则结果为真,不会再执行另一端表达式。

例如:int a=100,b=50,z=0;

z=a>b||b++;a>b为真,逻辑表达式值为1不在执行b++。最终结果得z=1,b=50;

移位运算符

<<,>>

移位运算符分为左移运算符和右移运算符法

左移运算<<是将数往左移位,空位补零。例如:

unsigned short a=45;        a=a<<3;

将2转换为二进制数为

0000 0000 0010 1101

<<3后去掉高三位低三位补0

000 0000 0001 0110 1000

结果为:0000 0001 0110 1000

右移运算<<是将数往左移位,空位补零。例如:

unsigned short a=45;        a=a>>3;

将2转换为二进制数为

0000 0000 0010 1101

>>3后去掉三位高三位补0

000 0000 0000 0000 0101 101

结果为:0000 0000 0000 0101

单目运算符

++、--、&、~。

++自增运算符有两种用法,一种是放在变量前使用,一种是放在变量后使用。

++放在变量前作用是先自增再调用,例如:

int a=0;
printf("%d\n",++a);//此时打印的结果是1,因为a先自增了再打印

++放在变量后作用是先调用再自增,例如:

int a=0;
printf("%d\n",a++);//此时打印的结果是0,因为a先打印再自增
printf("%d\n",a);//此时a的值打印出来是1

--自减运算符用法和自增运算符一样。

&是取地址符,使用&得到的是变量的地址

~是取反运算符,将变数据变成二进制数,然后将存储的二进制数全部取反。

例如 short int a=213;对a进行取反~a

0000 0000 0000 0000 0000 0000 1101 0101

~

1111 1111 1111 1111 1111 1111 0010 1010

现在符号位为1,变成的负数的存储方式,要想知道取反后a的值是多少就得把现在的值还原成原码。

对它进行-1还原补码前的数据,得到:

1111 1111 1111 1111 1111 1111 0010 1001

对符号位外取反还原反码前的数据就能得到原码了

1000 0000 0000 0000 0000 0000 1101 0110

取反后a的值就为-214。编译器验证如图:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值