C编程语言
- 执行效率高
- 可以控制操作硬件
- 资源开销小
- 跨平台可移植性强 行业基础
C语言学习内容:
- 基本数据类型表达式及运算符
- 常用输入输出函数
- 流程控制(分支结构.循环结构)
- 函数
- 数组
- 指针
- 构造数据类型
- 内存管理 位运算
- 程序调试方法
C语言学前储备知识
- 计算机如何执行C语言程序
计算机基本组成部分:
运算器 控制器 存储器 输入设备 输出设备
运算器+控制器===》CPU (GPU/NPU)
存储器:
内存:掉电数据丢失、空间小、读写效率高、价格昂贵
硬盘:掉电数据不丢失、空间大、读写效率低
cache:高速缓存设备
寄存器
- 计算机中数据的单位
bit 位 0/1
byte 字节(计算机内存存储单位) 8bits=1 byte
kb 1024bytes=1kb
mb 1024kb=1mb
gb 1024mb=1gb
tb 1024gb=1tb
- 进制转换
二进制: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
二进制转换成八进制、十进制、十六进制:
规则: 对应位*对应位的权值,累加求和
十进制转二进制、八进制、十六进制:
短除法:要转数据/进制数取得的余数逆序
二进制转十六进制、八进制
4个二进制位 转换1个十六进制位
3个二进制位 转换1个八进制位
按照8421编码方式转换
- 基本数据类型、表达式及 运算符
- C语言中的数据类型
基本数据类型
整数类型*
字符类型*
浮点类型*
缺省类型(空类型void)
函数的形参和返回值:不传递函数、不返回数据
指针:void*--》万能指针
波尔类型(c++)
逻辑类型
内存中:1字节
true/false(1/0)
#include<stdbool.h>
构造数据类型
指针类型
- 基本数据类型
整数类型:
1)整数类型分类:
有符号整形:可以表示正数,也可以表示负数
最高位:符号位 0:正数 1:负数
其他位:数据位
无符号整形:只能表示正数(>=0)
64位ubuntu系统下:
short:短整形
内存中:2字节
unsigned short: 无符号短整形
最大值:1111 1111 1111 1111---》2^16-1=65535
最小值:0000 0000 0000 0000---》0
short(signed short): 有符号短整形
最大值:0111 1111 1111 1111--》2^15-1=32767
最小值:1000 0000 0000 0000--》-32768
int 整形
内存:4字节
unsigned int:无符号整形
最大值:1111 1111 1111 1111 1111 1111 1111 1111--》2^32-1=42亿+
最小值:0000 0000 0000 0000 0000 0000 0000 0000--》0
int(signed int):有符号整形
最大值:0111 1111 1111 1111 1111 1111 1111 1111--》2^31-1 21亿+
最小值:1000 0000 0000 0000 0000 0000 0000 0000--》-2^31 -21亿
long 长整形
内存:8字节
unsigned long(int):无符号长整形
最大值:2^64-1
最小值:0
long(signed long int):有符号长整型
最大值:2^63-1
最小值:-2^63
关键字:sizeof(数据类型)--》返回一个结果:整形数据
获取某种数据类型在内存中所占的字节数
printf:向终端打印数据工具:
2)整形数据在内存中的存储方式:
无符号整形:原码(补码=原码)
有符号整形:
最高位:符号位--》0:正数 1:负数
其他位:数据位
正数:原码方式储存
负数:补码方式储存
补码
补码=反码+1
3)整形数据的溢出
unsigned short 最大值+1?
最大值+1--》最小值
最小值-1--》最大值
3.字符类型
char 字符类型
内存:1字节
‘a’ ‘b’ ‘$’ ‘#’ ‘?’ ‘\n’
unsigned char:无符号字符形
最大值:1111 1111----》2^8-1=255
最小值:0000 0000----》0
signed char: 有符号字符形
最大值:0111 1111---》2^7-1=127
最小值:1000 0000---》-2^7=-128
ASCII:转换标准:字符和整形数据之间的转换标准
4.浮点类型
用来表示小数的数据类型。
单精度浮点型:float
精度范围:6-8位
内存占的字节数:4
IEEE标准规定,float类型在内存中以符号位(1bit)、指数位(8bits)、尾数位(23bits)的方式存储
尾数位:指数位+补齐尾数位(23)
内存:小数点后+指数位+尾数位
双精度浮点型:double
精度范围:12-16位
内存中占的字节数:8
IEEE标准规定,double类型在内存中符号位(1bit)、指数位(11bits)、尾数位(52bits)方式存储。
1. 0.9 → double 常量,不能二进制精确存储
2. float f = 0.9:double 转 float,精度丢失,得到粗略近似值
3. f == 0.9:f 提升为 double,粗略近似值 vs double 高精度近似值
4. 两个近似值不相等 → 条件不成立 → 打印No!
单精度 %
双精度 %lf