嵌入式C语言提高——篇1 C语言常用关键字及运算符操作

嵌入式C语言提高——篇1 C语言常用关键字及运算符操作

前言

记录嵌入式C语言相关知识点的重新学习,篇1包括关键字、运算符及逻辑操作。

1、C语言的编译过程

预处理——编译——汇编——链接
预处理:去掉注释、加载头文件、替换宏定义,预处理不会进行语法检查

define 和 include 不是关键字。关键字在编译的时候去处理的,define是在预处理时就处理完了,不是关键字。

2、C语言常见报错

预处理错误——not find
编译错误——语法
链接错误——原材料不够,或者多了(函数声明,且调用了,不能只声明)

3、预处理的使用——技巧性的运用

#define 宏名 宏体

条件预处理
#if #else #endif

预定义宏
FUNCTION 函数名
LINE 行号
FILE 文件名

4、条件预处理举例

代码:
调试版本

发行版本

通过条件预处理设置一个DEBUG关键字,可以方便地在一套代码里面维护两个版本

5、宏展开下的#、##

使用在宏体中
#字符串化
##连接符号

6、C语言常用关键字及运算法操作

在这里插入图片描述

When how why
常用关键字的应用场景、使用技巧
掌握位运算的典型操作
嵌入式里面最小单位8bit char ,所以需要进行位操作

关键字:
数据类型(char/int/long/short/unsigned/signed/float/double/void)、自定义数据类型(struct/union/enum/typedef)、逻辑结构、类型修饰符、杂项(return/sizeof)

sizeof():编译器给我们查看内存空间容量的一个关键字
return

开发板裸机开发的时候不用调用printf函数,这个函数在头文件stdio.h里面,盖头文件依赖于操作系统

7、数据类型

C操作对象:资源、内存(内存类型的资源,LCD资源、LED灯)

int a
sizeof(a) 不一定是4,因为int的大小根据编译器来定的,不同位数的机器不同。但是常规定义下int就是4字节

char
硬件芯片操作的最小单位: bit 高/低
软件操作的最小单位:char a (一组比特)
char a = 300;//溢出了

int
int大小根据编译器来决定的,不同位数的处理器int的大小不同,一般32位机器int大小都是4Byte
int 4B

long short
300l
Long 8B
unsigned /signed
无符号 数据
有符号 数字(加减乘除)
内存空间的最高位是符号位还是数据

右移位运算 >>
有符号、无符号数移位运算
float/double
float 4B
double 8B
默认double
8f

void

8、自定义数据类型

struct
元素之间的和 累加
struct mystruct{
unsigned int a;
unsigned int b;
}; //定义类型
struct mystruct mybuff; //声明结构体变量

union
重叠,公用起始地址(技巧性代码)
在这里插入图片描述

union myunion{
Char a;
Int b;
}

enum (enumerate 枚举)
被命名的整形常数的集合
默认第一个为零
在这里插入图片描述

typedef
数据类型的别名

在这里插入图片描述

9、逻辑结构

if-else

switch(整形数字)

do while for
for:次数
while:条件
goto:只要用在同一函数中跳

10、类型修饰符

资源属性中位置的限定

auto-分配的内存默认可读可写
区域如果再{ },分配在栈里面

register-限制变量定义在寄存器上的修饰符
定义一些快速访问的变量(访问频率高的)
&这个取地址符号对register不起作用

static-静态
修饰3中数据:
(1)函数内部的变量
(2)函数外部的变量
(3)函数

extern-外部声明

const-常量的定义
只读的变量(可以通过指针修改)

volatile-告知编译器编译方法的关键字,不优化编译
修饰变量的值修改,不仅仅通过软件,也可能通过其他方式(硬件外部用户)

11、运算符

在这里插入图片描述

|| 和 & 有截断性,不能交换变量顺序
!逻辑取反

位运算
左移:乘法(乘以2)

在这里插入图片描述
在这里插入图片描述

按位异或
交换数据
在这里插入图片描述

按位取反
(与逻辑取反区别)

12、赋值运算

13、内存访问符号

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值