C语言基础知识梳理之运算符和表达式基础知识

C语言运算符和表达式基础知识

运算符和表达式的基本概念

  • 操作数:对于一个运算符需要几个数字才能使用
  • 左值:运算符的左边的变量,不能是常量,左操作数必须是左值
  • 右值:运算符右边的值
  • 优先级:先算谁再算谁
  • 结合性:从左往右 从右往左

赋值运算符

  • 加减法:int c=12

    注意:int a=c=123,这种写法是错误写法 赋值运算符存在以左值类型做转换的隐式转换

算术运算符

  • 加减法: + -

  • 乘法:* 不能省略

  • 除法:/ 自动取整 2/3=0 想要小数使分子或者分母为小数 或者直接强转分子或分母

  • 取余:% 只用于整数 符号之和被取余的数有关系

  • 复合赋值运算符

    • += -= /= *=

      C *= a+b
          //解析为:c=c*(a+b)
      

条件运算符和逻辑运算符

条件运算符

//大于  >
//小于  <
//大于等于  >=
//小于等于  <=
//等于   ==
//不等于 !=
  • 条件表达式的值只有0(假,不成立)和1(真,成立)两种

  • 不存在连续操作

    • 如 1<a<2 1<a只有0或者1两种值,永远小于2,所以1<a<2值为1

逻辑运算符

  • &&:逻辑与 并且的意思 前者成立时后者不会去执行
  • ||:逻辑或 或者的意思只要满足应该条件 前者的值为1后者不会执行,前者的值为0,后者才会执行
  • ! :取反 真的变成假的,假的变成真的
  • && 和|| 存在短路现象

位运算符

  • 位或 :|
    • 每位按逻辑或运算,如 1|2 = 3
  • 位与 :&
    • 每位按逻辑与运算,如 1&1 = 1
  • 异或 :^
    • 相同为0,不同为1,如 1^2 = 3
  • 右移 :>>
    • 往右边移动,左边加0,如 8>>3 = 1
  • 左移 :<<
    • 往左边移动,右边加0,如 1<<3 = 8
  • 按位取反:~
    • 0变成1,1变成0 负数需要转换成原码
    • 补码=反码-1

特殊运算符

  • ++ –

    • 前置先加减再赋值,后置先赋值再加减
  • 三目运算符:? :

  • 逗号运算符

    • 由多部分组成,起作用的是最后一部分

      int a = 1;
      int b = 2;
      int max = (a > b ? a : b);		    //求最大值
      //(a > b ? a : b)
      //a>b 成立 (a > b ? a : b)等于a   
      //a>b 不成立 (a > b ? a : b)等于b 
      //因为1>2不成立   (a > b ? a : b)的值就是b
      

运算符优先级

在这里插入图片描述

内存共享

  • 只看前置不看后置,所有部分都是一样的值
res = a++ + a++ + a++ + a++ + a++;//所有的都是后置++,所以都是1,5a,a=a+5a

res = b++ * ++b * b++ * ++b * b++;//有两个前置++,所以是4*4*4*4*4,b=b+5b
~~~c

a++ + a++ + a++;//所有的都是后置++,所以都是1,5a,a=a+5a

res = b++ * ++b * b++ * ++b * b++;//有两个前置++,所以是4*4*4*4*4,b=b+5b

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不想写代码的懒大王

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

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

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

打赏作者

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

抵扣说明:

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

余额充值