c基础语法-常用关键字
变量
在计算机中,整数是以补码形式存放的。所以如果整数的最高位是1,有符号数的话就是负数;如果是无符号数,则都表示正数
整形 int ->32 -2^31~2^31
无符号整形 unsigned int ->32 2^31
volatile unsigned int
volatile 不稳定的,易变的,告诉编译器要谨慎处理
什么时候用 volatile,3种情况
1.中断服务函数的共享变量
2.多线程的共享变量
3.寄存器变量 (举例,传感器拿到数据更改寄存器的某一位)
相同点: 这三种情况 都属于 不属于main函数控制的范围
在程序设计中 使用 int short char
typedef unsigned int u32
typedef unsigned short u16
typedef unsigned char u8
一个c代码文件编译过程:
预处理,词法分析,语法分析,语义分析,编译为汇编,链接库文件
a.c/a.h->a.i->a.s->a.o
一个c在执行时包括什么?
代码段 .text
数据段 .data 被初始化的全局变量 volatile unsigned int b=1;
BSS(未初始化数据段) 没有被初始化的全局变量 unsigned int a;
栈
堆
关键字
static------extern
作用1 限定作用域
作用域: 在一个.c中, 在一个函数中, 定义了static变量,不做初始化时,默认会自动初始化为0(数据放在数据段.data 的静态区)
作用2 在一个函数中定义static时,调用过程中其值不变
作用3 在模块中定义static时, 被定义者只能被本模块使用(类似于私有变量/函数)
#define 仅仅是字符串常量替换,数据类型跟平台相关
const 只读, 能指定数据类型
#define PI 3.141592653 (数据类型不明确,需要看平台)
const float PI=3.141592653 (精确指定用float类型)
typedef 类型 别名
typedef struct Student{
int age;
char name;
}Stu;
struct Student stu1;
Stu stu1;
位运算:
& 按位与
| 按位或
! 按位取反
^ 按位异或 如果两个相应bit位相同,则结果为0,否则为1
<<(左移)
运算规则: 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
数学意义: 在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次,左移n位就相当于乘以2的n次方。
>>(带符号右移)
运算规则: 按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。
数学意义: 右移一位相当于除2,右移n位相当于除以2的n次方。取商,余数不要。
掩码MASK
掩码的作用 提取某一位
掩码的生成 掩码= 1<<提取的位数
寄存器编程的三个手段
1.置1 flag|=MASK flag|=(1<<(想要操作的位数))
2.清0 flag&=~MASK flag&=~(1<<(想要操作的位数))
3.转置 flag^=MASK flag^=(1<<(想要操作的位数))
数组
int a[容量]
数组名 (const) 是个固定地址 (不能自加 不能赋值)
int a[32];
int* pa;
pa=a;
pa++;
函数
函数的调用就是把函数的定义地址放入pc指针寄存器
结构体
结构体指针访问成员用->,结构体访问成员用.
寄存器封装(注意:每个寄存器位数对齐操作)
typedef volatile unsigned int VU32;
typedef struct _T_Xxx_Config{
union{
struct{
VU32 enable_start :1;
VU32 read_start :1;
VU32 stdbm :1;
...
}bits;
VU32 INIT;
}adccon;
}T_Xxx_Config;
typedef T_Xxx_Config * p_XxxRegs;
p_XxxRegs p_XxxReg;
p_XxxReg->adccon.bits.enable_start=1;
p_XxxReg->adccon.bits.read_start=1;
参考:
结构体: https://www.elecfans.com/d/1433999.html
epoll: https://blog.csdn.net/armlinuxww/article/details/92803381
c基础语法-常用关键字的更多相关文章
- Java SE 基础:常用关键字
Java SE 基础:常用关键字 常用关键字表
- Java基础语法(1)-关键字与保留字
title: Java基础语法(1)-关键字与保留字 blog: CSDN data: Java学习路线及视频 1.关键字 关键字(keyword)的定义和特点 定义:被Java语言赋予了特殊含义,用 ...
- .bat学习-基础语法(常用)
一般来说,脚本或者语言都有相同地方 定义变量,输入,输出,判断条件等等.知道的相同之处,我们就可以借助强大的搜索引擎进行查找我们想要知道的东西. bat为批处理脚本BATCH.现在只知道是使用于win ...
- Java基础语法(一)---关键字、常量、变量、运算符
一.关键字 定义:被Java赋予了特殊含义的单词. 特点:体现上都是英文小写. 1. 用于定义数据类型的关键字 基本数据类型: 整数类型:byte short int long 浮点类型:f ...
- -1-1 java 基础语法 java关键字 java 注释 常量 语句 运算符 函数 数组定义
Java语言基础组成 关键字 标识符 注释 常量和变量 运算符 语句 函数 数组 关键字 定义:被Java语言赋予了特殊含义的单词 特点:关键字中所有字母都为小写 用于定义数据类型的关键字 class ...
- python基础之常用关键字总结
前言 到python3.6为止,python内置的关键字有33个,比python2.7的版本多了2个.下面总结一下python3的关键字的使用. python内置关键字 解释器在加载上下文的时候,如果 ...
- java基础语法this关键字
未经允许,禁止转载!!!!!!!! this关键词在java里面很重要,想了解清楚this就必须对 类:对象:this:成员变量:方法:构造方法 都了解清楚. 一.使用this调用本类中的成员变量( ...
- JS基础语法---continue关键字
continue: 在循环中如果遇到continue关键字,直接开始下一次循环 如下:continue在计数器之前,会一直循环,浏览器会崩溃,我的就崩溃了 var i = 0; while (i &l ...
- JS基础语法---break关键字
break关键字: 如果在循环中使用,遇到了break,则立刻跳出当前所在的循环 for (var i = 0; i < 10; i++) { while (true ...
- java——基础语法
java基础语法 1.关键字:java赋予特殊含义的单词. 2.标识符:程序中开发人员自定义的名词,例如:类名,函数名,变量名(注意事项:①不能以阿拉伯数字开头②不能采用关键字). 3.常量:固定的数 ...
随机推荐
- LeetCode-587 安装栅栏及三种凸包算法的学习
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/erect-the-fence 题目描述 在一个二维的花园中,有一些用 (x, y) 坐标表示的树 ...
- 解决Connecting to 127.0.0.1:8118... failed: Connection refused.
这里是代理问题的锅 $ env|grep -I proxy http_proxy=http://127.0.0.1:8118 ftp_proxy=http://127.0.0.1:8118 https ...
- Django models.py 表的参数选择
from django.db import models # Create your models here. class Department(models.Model): # 以后可以新增, ...
- maven打包找不到本地jar包的解决方法
有时候我们在项目中会引入一些本地jar包,在maven打包时会找不到这些jar,我们需要在pom.xml中的 <pluginManagement> <plugins> < ...
- vue2中请求函数防抖处理
- cisco恢复IOS文件的方法
cisco IOS恢复的方法很多,这里使用TFTP方法恢复. 当你delete flash: 后 路由器重启将不能工作,这时要恢复IOS 把你备份好的IOS文件放到TFTP目录里面. > IP_ ...
- class和struct区别
类(class) 引用类型:将一个对象赋值给另一个对象时,系统不会对此对象进行拷贝,而会将指向这个对象的指针赋值给另一个对象,当修改其中一个对象的值时,另一个对象的值会随之改变. 结构体(struct ...
- Java面向对象之回顾方法及加深
回顾方法及加深 方法的定义 修饰符 返回类型 break和return的区别 1.break:跳出switch,结束循环 2.return:代表方法结束,返回一个结果 方法名:注意规范.见名知意 参数 ...
- vue-cli4.3中配置publicPath和router后,报错chunk-vendors.js:1 Uncaught SyntaxError: Unexpected token '<'
- sqlite 数据更新
1.整个库迁移(命令) https://blog.csdn.net/kevin_weijc/article/details/78920593 2.单个表数据导入(attach,在数据库中添加附加数据库 ...