嵌入式c语言补习3

1.1 概念

 

在整个程序运行的过程中,值允许发生变化的量。

1.2 定义变量的格式

一、变量

1.1 概念

在整个程序运行的过程中,值允许发生变化的量。

1.2 定义变量的格式

          存储类型 数据类型 变量名;

存储类型:auto  static extern  register 

 局部变量不写存储类型 默认的都是auto

数据类型:决定了定义的变量占用的内存空间的大小的

变量名:是一个标识符,要符合标识符命名规范

1.3 定义变量的作用

相当于告诉操作系统 给这个变量分配内存空间 准备存储数据了

1.4 变量的初始化和赋值

二、强制类型转换

注意:强制类型转换是不安全的,要谨慎使用。

           小的类型转大的一般没问题,

           但是大的类型转小的就可能出现数据的截断。

所谓的强制类型转换,就是在某次运算中,

通过某种方式将变量的类型换成其他的类型来参与本次运算。简称 强转

不会影响变量自身的类型,变量自身的类型只和定义变量时有关。

2.1 显式强转

         格式:

                  (新的类型)变量名

   例如:

2.2 隐式强转

隐式强转是由编译器根据上下文自动推导出来的,

如果编译器认为这种强转是安全的,就直接通过了

如果认为是不安全的,可能会报一个警告,具体取决于编译器的严谨程度。

注意:

        有符号数和无符号数参与运算时,会将有符号数转换成无符号数来参与运算。

           signed int a = -20;

           unsigned int b = 10;

           a+b 的结果是大于 0 的

三、运算符

3.1 概念

       运算符就是一个符号,是用来连接多个表达式从而进行运算的。

       所谓的表达式,就是由运算符、运算量、标点符号 等组成的一个有效序列

       是用来说明运算的过程的。

3.2 运算符的分类

     根据类型区分:

                  算数运算符    :  + - * / %(模除 取余运算 模除运算符要求左右操作数必须是整型) ++ --

                  关系运算符    :   > < >=

                  逻辑运算符    :   && || !

                  位运算符       :   & | ^ ~ >

                  赋值运算符    :   = += -= *= /= %= &= |= (复合赋值运算符)

                  条件运算符    :    ?: (C语言中唯一一个三目运算符)

                  sizeof运算符 :  计算变量或者类型的大小的

                  逗号运算符   :  不常用

3.3 算数运算符

       + - * / %

    C语言中输入的函数 scanf

3.4 自增自减运算符

   ++ --

        int a = 10;

       a++     a = a+1;

       ++a     a = a+1;

        a--     a = a-1;

        --a     a = a-1;

注意:以++运算符为例 不管是 a++ 还是 ++a ,执行之后 a 的值都会 +1

          但是表达式的结果是不一样的

a = 10;

b = ++a;

上述两步之后 a = 11 b = 11

a = 10;

b = a++;

上述两步之后 a = 11 b = 10

3.5 关系运算符

   > < >=

         关系运算符就是用来判断大小关系的

         关系运算符表达式的结果是一个bool类型 0 假 非0 真

         多用于控制语句

注意:一定要区分 = 和 ==

          = 赋值运算符

           == 关系运算符

例:

3.6 逻辑运算符

&& || !

         逻辑运算符是用来连接多个由关系运算符组成的表达式的

         所以逻辑运算符表达式的结果也是一个 bool 类型

&&      逻辑与 表示并且的意思

          逻辑与连接的多个表达式,如果全为真,整个表达式的结果才为真,

          有一个表达式为假,则整个表达式的结果就为假

||        逻辑或 表示或者的意思

          逻辑或连接的多个表达式,有一个为真,整个表达式的结果就为真

          所有表达式都为假,整个表达式的结果才为假

!        逻辑非 相当于逻辑取反的意思

         真变假 假变真

         逻辑非是一个单目运算符,用法如下:

逻辑运算符使用实例:

C语言不支持这样的写法 : 10<X>20

逻辑运算符的短路原则:

              逻辑与连接的多个表达式,如果遇到某一个为假了,后面的表达式就不再执行了

              逻辑或连接的多个表达式,如果遇到某一个为真了,后面的表达式就不再执行了

3.7 位运算符

位运算符是针对二进制而言的,位指的是bit位,不管几进制的数据,只要做位运算,

一定要转换成二进制来参与运算

一般情况下,涉及位运算时使用的都是无符号数据,如果有符号

还可能设置原码、反码、补码转换的问题

一般多用于硬件设备的控制和标志位的控制。

         &     按位与    :   按位运算,全1为1,有0为0

         |      按位或     :  按位运算,有1为1,全0为0

         ^     按位异或 :  按位运算,不同为1,相同为0

        ~     按位取反 :  1变0 0变0

       >>   按位右移  :  整个数据向右移动,舍弃低位,高位补0

例:

小技巧:

            0与任何数 结果都是0

            0或任何数 结果都是任何数

           1或任何数 结果都是1

           1与任何数 结果都是任何数

3.8 赋值运算符

 =

     一般形式:   左 = 右

注意:

1.是将右边的值赋值给左边

2.常量是不能放在左边的

3.注意 = 和 == 的区别

复合赋值运算符:

+= -= *= ...

a+=b a = a+b;

a-=b < ===> a = a-b;

...其他同理

3.9 条件运算符

?:

是C语言中唯一一个 三目运算符

格式:

             表达式1?表达式2:表达式3;

执行逻辑:

先执行表达式1,如果表达式1为真则执行表达式2,否则执行表达式3.

和 if..else 语句的逻辑很类似。

例如:

3.10 sizeof运算符

sizeof运算符是用来计算变量或者类型的大小

格式:

          sizeof(变量名或者类型名);

     sizeof的用法和函数调用非常像,要注意,sizeof是C语言的关键字,不是函数调用

          sizeof返回的计算结果:

     32位系统 返回的是4字节的 %d

    64位系统 返回的是8字节的 %ld

3.11 逗号运算符

----不常用,了解即可

所谓的逗号运算符,就是用逗号来连接多个表达式。

格式:

         (表达式1, 表达式2, 表达式3 ... ,表达式n)

执行逻辑:

         从左到右,每个表达式都会执行,最后一个表达式的结果就是整个逗号运算符表达式的结果

例如:

3.12 运算符优先级问题

   如果要写复杂的表达式,区分不好运算符的优先级时,可以加()来控制优先级

   因为()优先级是最高的, 如 (a+((b-(c*6))+5))

  运算符优先级,参考下图:

运算符优先级的顺口溜:

                  单算移关与,异或逻条赋。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值