C语言中的运算符

  • 表达式:由运算符和操作数组成的符合C语言规范的式子
  • 左值:一块内存如果能够对它进行写入操作,这块内存就称为左值
  • 右值:一块内存如果能够对它进行读取操作,这块内存就称为右值

算术运算符


  • +、-、*、/、% 、++、--

[ / ]:除法

  • 两个整数相除,结果为整数(取整)
    • Python:-3//2=-2    向负无穷取整
    • C        :-3/2=-1      向0取整
  • 一个整数与一个浮点数进行(+-*/)运算,结果为浮点数。
  • 除数不能为0

[ % ] :取余

  • 对普遍语言:a % b = a - a整除b * b
  • C语言中取余结果 = 两个操作数绝对值进行取余,符号与做操作数相同。
    • Python:-5%3=1       因为-5%3=-5-(-5)//3*3=-5-(-2)*3=-5+6=1
    • C         :-5%3=-2      因为-5%3=-5-(-5)/3*3=-5-(-1)*3=-5+3=-2
  • 取余运算有操作数不能为0。

[ ++ ] :自增运算符,一元运算符

  • 前自增运算符:++操作数
    • 先对操作数进行+1操作,再取操作数的值。
  • 后自增运算符:操作数++
    • 先取操作数的值,本行语句执行完后再对操作数+1
int i = 1, j = 1;
printf("++i = %d\n", ++i);//2
printf("j++ = %d\n", j++);//1
printf("i = %d\n", i);//2
printf("j = %d\n", j);//2
  • 自增运算符主要使用在循环中,在实际开发中,不允许在一个表达式中对一个变量多次进行自增、自减操作。

赋值运算符

  • 赋值运算符:=
  • 复合赋值运算符
    • 算术复合运算符:+=、-=、*=、/=、%=
    • 位复合运算符:&=、|=、~=、<<=、>>=、^=

关系运算符

  • 在运算时:   0:表示假      非0:表示真
  • 在结果中:   0:表示假         1:表示真
  • >、<、>=、<=、==、!=
  • 0<=a<=100  结果恒为1

逻辑运算符

  • 逻辑与:&&
    • 逻辑与的短路问题:当左操作数结果为假时,右操作数不执行。
  • 逻辑或:||
    • 逻辑或的短路问题:当左操作数结果为真时,右操作数不执行。
  • 逻辑非:!
    • !真 => 假
    • !假 => 真

条件运算符

  • 操作数1 ?操作数2:操作数3
  • 判断操作数1的结果,如果为真,执行操作数2;如果为假,执行操作数3。

位运算符

  • 位与:&
    • 对两个操作数,按位进行与运算
    • 3 & 4 => 0011 & 0100 =>0000 => 0
  • 位或:|
    • 对两个操作数,按位进行或运算
  • 位非:~
    • 对两个操作数,按位进行非运算 0->1, 1->0
  • 位异或:^
    • 对两个操作数按位进行异或运算
    • 0 ^ 0 => 0
    • 1 ^ 0 => 1
    • 0 ^ 1 => 1
    • 1 ^ 1 => 0
  • 左移:<<
    • 操作数1 << 操作数2
      • 将[ 操作数1 ]整体往左移动[ 操作数2 ]位,低位补0,如果有符号数,符号位会被数据位填充。
      • 2 << 1 => 4
    • 对于正整数而言,相当于[ 操作数1 ]乘以2的[ 操作数2 ]次方。
    • 对于负整数而言,C语言没有给出定义,结果是未定义的。
  • 右移:>>
    • 操作数1 >> 操作数2
    • 将[ 操作数1 ]整体往右移动[ 操作数2 ]位。
      • 4 >> 1 => 2
    • 对于正整数而言,相当于[ 操作数1 ]整除2的[ 操作数2 ]次方。
    • 对于负整数而言,结果是未定义的。对于大部分编译器,对于负数右移运算,符号位补1来实现负整数整除2的效果。

逗号运算符(,)

  • 操作数1,操作数2
  • 优先级最低的运算符,二元运算符,从左到右。
  • 先执行操作数1,在执行操作数2,然后把操作数2作为整个表达式的结果。

()括号运算符

  • 可以通过括号运算符更改运算符的优先级。

sizeof()运算符

  • 求[操作数]数据类型占用的字节数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值