嵌入式小白学习笔记-C语言基础2

一、常量与变量:

1、常量:

在程序执行过程中值不会发生变化的量,不会出现在赋值的左边

1、整型:整数

2、实型:小数

3、字符:单引号引起的字符,实现特定功能‘ \n’ ,'\t' 存储在char

4、字符串:双引号引起的一个或多个字符组成序列(尾零"")存储的变量为数组

5、标识常量(宏):#define PI 3.14 (对数值类型不做校验),有计算公式要注意优先级打括号

▲▲宏定义可能会出现bug,但是宏定义是编译阶段就处理完成,不影响程序的运行速度。

在不追求处理速度的情况下,尽量使用函数代替宏定义以此来提高程序的稳定性

2、变量:

定义:

用来保存一定内容,并且在执行过程中值随时会发生变化的量

【存储类型】 数值类型 标识符 = 值

type name= value

存储类型: auto static register extern

数据类型:基本数据类型+构造类型

标识符不能以数字开头,定标识符尽量做到见名生义

存储类型:

存储类型: auto static register extern

auto:默认自动分配空间

static:自动初始化为0或者空,其值具有继承性,另外常用于限制一个变量或函数(用于全局变量)

register:建议把变量放入寄存器中,只能定义局部变量大小为32位以内,如double就不行,且寄存器没有地址,故寄存器类型的变量无法打印出地址

extern:(可以应用于其他文件中)不能改变说明的变量值和类型。例如main函数中引用了头文件中定义的变量,头文件中的变量需声明extern

volatile:例如在多线程程序中,如果一个变量可能会被多个线程同时访问和修改,那么它应该被声明为 volatile。这可以防止编译器优化掉对变量的读取,因为编译器不能假设变量的值在内存中是稳定的。

变量的生命周期和作用范围:

全局变量:放在main函数之前的变量,局部对变量的调用都可能影响全局变量的值,习惯加上static

局部变量:内层的局部变量屏蔽外部的全局变量:内i屏蔽外i

二、运算符和表达式:

1、常见的运算符:

1、每个运算符所需要的符号数量:单目双目

2、运算符在前,先计算,再取值;变量在前 ,先取变量值使用,再进行计算:++i | i++

3、 比较运算符:得到真与假,且非0即为真,0即为假

4、短路特性:&&左边为非零,才会对右边表达式进行判断

||左边为零才会对右边进行判断

5、 a * = 1 -->a = a*1

(+= 、-=、/=、%=同理)

6、条件运算符:a ?b:c

7、▲sizeof:计算数据类型、变量、常量的大小

注意,sizeof是一个关键字,在编译阶段就已经进行转换了。

8、强制转换符:数据类型例如float p= 3.9;a=(int)p,对p本来的值没有改变

2、运算符优先级:

3、表达式:

表达式和语句:区别于加不加分号

表达式一般就是一个布尔类型的值,值为0则是false,非0则是true。

4、位运算:

操作数:在linux嵌入式开发中有二进制的原数

1、左右移:

B110 >> 1 --> B11

2、取反 ~ :

B110-->B001

3、按位或、按位与、异或、同或

i=B1001,j=B1100

| 或: i | j=1101

有1为1

& 与:i & j=1000

有0为0

^ 异或:i ^ j=0101

不同为1

~^: 同或:~(i^j)=1010

相同为1

4、例题:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值