IOT嵌入式物联网----运算符,表达式和语句

系列文章目录

零 ---- 千里之行,始于足下

壹 ---- 嵌入式C语言编程


一、运算符、表达式和语句的概念

        运算符是一种告诉编译器执行特定的数学或逻辑操作 的符号, C 语言内置了丰富的运算符,并提供 了多种类型的运算符。
         表达式就是通过 运算符 运算对象 (操作数)连接起来的式子。
   

        由表达式组成的语句称为表达式语句。它由一个表达式后接一个分号“;”组成。

二、运算符

        (一)运算符类型

        根据运算符的作用,主要分为以下几种类型:

         运算符也叫做操作符,根据运算符操作的运算对象的个数,可以将运算符分为以下几种:

         ----单目运算符:只需要一个操作数

         ----双目运算符:需要两个操作数

         ----三目运算符:需要三个操作数

        (二)运算符的优先级

        运算符的优先级一般按照如下规律:

        ! > 算术运算符 > 关系运算符 > && > || > 条件运算符 > 赋值运算符 > 逗号运算符

        具体可参照下表

        

        (三)算术运算符

        C语言内置的算术运算符有如下几种:

         ---- % 取模运算符的两个操作数只能作为整数

         ---- 前自增/前自减先计算后使用,后自增/后自减先使用后计算

         

        (四)赋值运算符

        C语言内置赋值运算符有如下几种:

          ---- 在C语言中,“ = ” 不是相等的意思,而是将右值赋给左值。赋值表达式的语句的目的是把值存储到内存上用于存储值的数据存储区域统称为数据对象。 “左值"指用于标识一个特定的数据对象的名字或表达式。"右值"指的是能赋给可修改的左值的量。

            ---- 左值具有三个特性:
                1. 可修改性,又称为可修改左值
                2. 是数据对象的标识符,应具有标识符的特性
                3. 左值不能为常量

        (五)关系运算符

        C语言内置关系运算符有如下几种:

         关系运算符用于比较两个数值中间的关系,所以也叫做比较运算符。

        另外,需要特别注意 “=”“==” 的区别!通常在刚接触代码的时候,会经常判断错误,将“=”误以为是“==”

        (六)逻辑运算符

        为什么在关系运算符里面,结果只有0和1呢?而且成立则是1,不成立是0。原来,在计算机中,通过两个逻辑来表达数值之间的关系的,分别是逻辑真逻辑假,逻辑真则表示关系是成立的,逻辑假则表示关系不成立。

        逻辑假是用0来表示的,而逻辑真是使用非0来表示。在这里,初学者容易掉入一个坑,我们需要记住,1 ,但是不仅仅是1!

        C语言内置逻辑运算符有如下几种:

        在实际的生活当中,我们经常会用区间表示范围,例如,我们经常将学生成绩大于等于60且小于70的值判定为良好,在书写时是使用“60<=x<70”来表示。

        但是通过我们上面学习的运算符优先级和关系运算符,大家可以猜猜上面的判断结果答案有多少个呢?

        (1)第一步:我们先计算 60 <=x表达式的结果,很显然不论x的值为多少答案都只有两个,分别是0或者1

        (2)第二步:用0或者170比较大小,很显然结果为1

        也就是说,无论x的值是多少,60<=x<70的答案都是成立的!因此,在我们进行范围判断的时候,需要使用逻辑运算符来连接两个范围,例如:60<=x && x<70

        (七)位运算符

        在软件开发过程中,常常需要处理二进制位的问题,例如:
            ---- 通过单片机、STM32等控制灯光、风扇等
            ---- 通过子网掩码求IP地址的网络号
            ---- 通过异或对数据进行加密
            ---- 通过位运算判断数据的奇偶性(x & 1)
        C 语言内置的位运算符有:

          ---- 左移n位等于乘以2的n次方

          ---- 右移n位等于除以2的n次方


思考

        1、是不是只要是左移就能够实现乘以2的倍数呢?数据是否会产生溢出?

        2、如何不使用中间变量交换两个整型变量的值?可以用“+”和“-”实现吗?可以用“^”实现吗?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值