嵌入式C语言各关键字、类型转换、运算符优先级知识点学习记录

1、数据类型相关的关键字

        用于定义变量或者类型:char、short、int、long、float、double、struct、union、enum、signed、unsigned、void。

        1.1、char 字符型,用char定义的变量是字符型变量,占1个字节

        1.2、short短整型,使用short定义的变量是短整型变量,占2个字节

        1.3、int整型,用int定义的变量是整形变量,在32位及64位系统下占4个字节,16位平台下占2个字节

        1.4、long长整型,用long定义的变量是长整型的,在32位系统下占4个字节,在64位系统下占8个字节。

        1.5、float单浮点型(实数),用float定义的变量是单浮点型的实数,占4个字节

        1.6、double双浮点型(实数),用double定义的变量是双浮点类型的实数,占8个字节。

        1.7、struct关键字是与结构体类型相关的关键字,可以用它来定义结构体类型。

        1.8、union关键字是与共用体(联合体)相关的关键字。

        1.9、enum是与枚举类型相关的关键字。

        1.10、signed 有符号的意思;在定义char、整形数据的时候用signed修饰,表示定义的数据是有符号的,可以表示正数也可以表示负数。

        1.11、unsigned 无符号的意思;在定义char、整形数据的时候用unsigned修饰,表示定义的数据是无符号,只能保存正数和0。

        1.12、void空类型的关键字;void不能定义变量,是用来修饰函数的参数或者返回值,代表函数没有参数或返回值

2、存储相关关键字

        2.1、register 是寄存器的意思,用register修饰的变量是寄存器变量。即:在编译的时候告诉编译器这个变量是寄存器变量,尽量将其存储空间分配在寄存器中。注意:(1)、定义的变量不一定真的存在寄存器中。(2)、cpu取数据的时候去寄存器中拿数据比去内存中快。(3)、因为寄存器比较宝贵,所以必能定义寄存器数组。(4)、register只能修饰字符型和整型变量,不能修饰浮点型。(5)、因为register修饰的变量可能存放在寄存器中不存放在内存中,所以不能对寄存器变量取地址。因为只有存放在内存中的数据才有地址

        2.2、static 是静态的意思。可以修饰全局变量、局部变量、函数。使用static修饰的变量,保存在内存的静态区空间中

        2.3、const 是常量的意思。用const修饰的变量是只读的,不能再去修改变量的值。const也可以用来修饰指针。

        2.4、extern 是外部的意思,一般用于函数和全局变量的声明。

3、其他关键字

        3.1、sizeof 用来测变量、数组的占用空间的大小(字节数)。

        3.2、typedef 重命名相关的关键字。作用是给一个已有的类型,重新起个类型名,并没有创造一个新的类型。

                typedef short int INT16;         

        3.3、volatile 易改变的意思。用volatile定义的变量是易改变的。即告诉cpu每次用volatile变量的时候,重新去内存中取保证用的是最新的值,而不是寄存器中的备份。现在较少使用。        

4、格式化输出字符

        %d:十进制有符号整数

        %ld:十进制long有符号整数

        %u:十进制无符号整数

        %o:以八进制表示的数。%#o可以输出8进制的前导符

        %x:以十六进制表示的数。%#x可以输出16进制的前导符

        %f:float型浮点数

        %lf:double型浮点数

        %e:指数形式浮点数

        %c:单个字符

        %s:字符串

        %p:指针的值 

        特殊使用:%3d表宽度为3不足前面空格补齐,%03d表宽度为3不足前面0补齐,%-3d表宽度为3不足后面空格补齐,%.2f表保留小数点后两位 

5、类型转换

        数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。

        5.1、自动类型转换:占用内存字节数少(值域小)的类型,向占用字节数多(值域大)的类型转换,以保证精度不降低。

                1):当表达式中出现了char、short、int、int类型中的一种或多种,没有其他类型。参加运算的成员全部变成int类型的参加运算,结果也是int类型。

                2):当表达式中出现了带小数点的实数,参加运算的成员全部变成double类型的参加运算,结果也是double类型。

                3):当表达式中有有符号数,也有无符号数,参加运算的成员变成无符号数参加运算,结果也是无符号数。(表达式中无实数)

                4):在赋值语句中等号右边的类型自动转换为等号左边的类型。

                5):注意自动类型转换都是在运算过程中进行临时性的变换,并不会影响自动类型转换的变量的值和类型。

        5.2、 强制类型转换        通过类型转换运算来实现        (类型说明符)(表达式)

                把表达式的运算结果强制转换成类型说明符所表示的类型。

6、逗号运算符

        (...,...,...)使用逗号隔开的表达式,从左向右依次执行,最后的表达式的值是整个运算结果。例如A=(B,C,D),会先运行B再运行C再运行D,把D的值赋给A。

7、运算符优先级表

        运算符优先级表

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值