C语言1-基础知识、数据类型、常量和变量

hi!大家好,今天是学习嵌入式的第二天。希望可以和大家一起互相交流学习嵌入式。今天开始进行C语言部分的学习。今日学习内容为基本数据类型。

摘要:【嵌入式学习笔记:C语言基础数据类型】本文介绍了嵌入式开发中C语言基础数据类型的学习内容:1. 计算机组成原理:CPU、内存与外存的交互关系;2. 数据单位换算:bit、byte到TB的进制转换;3. 基本数据类型分类:包括整数型(有/无符号)、浮点型(float/double)、字符型(char)、布尔型(bool)和void类型;4. 变量与常量定义规则:命名规范、存储特性及各类常量表示方法。重点讲解了补码存储原理、ASCII编码、浮点数精度等核心概念,为嵌入式开发奠定C语言基础。

一、C语言学习计划

1.基本数据类型、运算符、表达式。

2.输入输出函数。

3.流程控制。

4.数组。

5.函数。

6.指针。

二、基础知识

1.C语言代码运行的原理(了解即可):

首先计算机包含五大组成部分。运算器、控制器、储存器、输入设备、输出设备。

运算器目前统称CPU,与CPU进行交互的是内存(造价高、读写速度快、掉电数据丢是)。还有一个外存(造价便宜、读写速度慢、掉电数据不丢失)不能与CPU进行信息交互。

所以我们写好的二进制代码写好时先存在外存当中,电脑编译运行时加载至内存中。内存会将指令和数据加载到CPU中执行代码。

2.计算机中各数据的单位:

bit(位)代码中0/1占一位
byte(字节)1byte == 8bits
kb1kb == 1024 bytes
mb1mb == 1024kb
gb1gb == 1024mb
tb1tb == 1024gb

3.进制转换:

二进制:0 1

八进制:0 1 2 3 4 5 6 7

十进制:0 1 2 3 4 5 6 7 8 9

十六进制: 0 1 2 3 4 5 6 7 8 9 a b c d e f

①二进制、八进制、十六进制——→十进制:   对应位 * 对应位的权值再求和

eg:0x123(十六进制)

十进制结果=3*16^0+2*16^1+1*16^2

                  =291

其他情况类似

②十进制——→二进制、八进制、十六进制:十进制数除以进制数得到的余数逆序排列(短除法)

三、C语言数据类型

 1.数据类型分类:

①基本数据类型(C语言中自带的类型)

整数类型 浮点数类型 缺省类型 泊尔类型

②构造数据类型(用户自己定义的数据类型)

结构体 共用体 枚举

2.整数类型:

①分类

- 根据整数类型可以分为有符号类型signed和无符号类型unsigned,默认为有符号 (signed)类型

- 根据存储空间大小不同可以分为:短整型short、整形int、长整型long

②数据类型的大小

③注意事项:

- 有符号数在内存中存放数字对应的二进制补码形式,无符号数在内存中存放数字对应的二进制形式

eg:-32

原码  010 0000 (32对应的二进制)

反码  101 1111  (对原码取反)

补码  110 0000    (对反码进行"+1")

内存 1110 0000   (最左边的为符号位,1代表负数,0代表正数)

- 可以通过sizeof (数据类型/变量名)获得数据类型所占空间大小

3.字符类型:

- 字符类型用char表示,本质上也是一种整数类型。在C语言中char类型标识单个字符,能够从键盘中输入的都是字符(小写英文字母、大写英文字母、符号、字符类型用char表示,本质上也是一种整数类型数字字符)。eg:'A'  'a'  '1'  '!' 

- ASCII码表规定字符和数字之间的转换关系:32号之前的字符用于通信控制,多数无法在终端显示,可能会显示乱码'a' -> 01100001 01100001 -> 'a'      'A' -> 01000001 01000001 -> 'A'

- 数据类型大小

4.浮点数类型:

- 浮点数所有均为有符号类型,没有无符号类型

- 浮点数类型分为单精度浮点数类型(float)、双精度浮点数类型(double)

- float类型存储(32位) == 符号位(1位)+ 指数位(8位)+尾数位(23位)

- double类型存储(64位) == 符号位(1位)+ 指数位(11位)+尾数位(52位)

- float类型精度6-8位,double类型精度12-16位

数据类型空间大小值域范围
float4个字节-3.402823*10^38 - 3.402823*10^38
double8个字节-1.971693*10^308 - 1.971693*10^308

5. 缺省类型 void

- void修饰函数参数或者函数返回值表示类型缺省

- void修饰指针,表示指针指向的类型是缺省的

6.泊尔类型(逻辑类型)

- bool 1个字节 true(1) false(0)

- C语言中使用bool类型需要加入头文件#include

- C语言非0值即为逻辑真值,0值即为逻辑假值

四、变量和常量

1.常量:程序运行过程中值不会发生改变的量;常量可以直接使用

①整形常量:默认signed int

eg: 123、-123、0x123、123u(unsigned int)、123l(long)

②浮点型常量: 默认 double

eg:3.123、3.123f(float)、3.123e15(指数)

③字符常量:

eg:'A' 、'a' 、'1' 、 '!'、 '\'' '字符 、'\\' \字符 、'\n' 换行符、 '\t' 制表符、 '\r' 回车符 、'\v' 纵向制表符、 '\b' 退格符、 '\0' \0字符表示字符串的结尾、'0' 字符0、'\八进制数' 八进制数为3位 、'\x十六进制数' 十六进制数2位

④ 字符串常量:字符串末尾有一个用来标识结尾的\0字符

eg:"hello" 'h' + 'e' + 'l' + 'l' + 'o' + '\0——六个字节

⑤标识常量:

#define 标识 常量

标识常量可以提高代码的可读性;宏只是代码的替换,中间不执行任何数据计算的处理;宏定义能加括号就加括号;标识常量名可以小写,但是一般都用大写(与变量名做以区分)

可以通过学习内容,试试下面的小测试。

2.变量:在程序运行过程中值可以发生改变的量

①变量必须先定义再使用,定义形式:数据类型 变量名()

 变量名要求: 只能由字母、数字、下划线构成、不能以数字开头;

                        变量名不要与关键字重名,变量名最好不要与库函数重名;

                        变量名最好通俗易懂,便于理解;

                        变量有存储空间,变量名为该空间的标号;

②分类:

整形变量、浮点型变量、字符型变量

定义方式如下图所示

输出结果如下图

③变量初始化:
1. 变量未经初始化前值为随机值
2. 定义变量时,为变量赋初值
3. 变量定义完毕后一定要初始化,不要使用未经初始化变量

初始化方式如下所示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值