1. 计算机存储单位
位 bit 字节 byde
1MB=1024KB=1024*1024B=1024*1024*8bit
2. 计算机数据表示形式
2.1. 数值型数据
二进制 0 1
八进制 0-7 421码
十进制 0-9
十六进制 0-9 a-f(10-15) 8421码
2.2. 非数值型数据
打开vscode终端输入man ascii 查看ASCll码表
'\0' 0 字符串的结束标志
'\n' 10 换行
' ' 32 空格
'0' 48 字符0
'9' 57 字符9
'A' 65 大写字母A
'Z' 90 大写字母Z
'a' 97 小写字母a
'z' 122 小写字母z
字符数字 - 48 = 数字
字符数字 - '0' = 数字
大写字母 + 32 = 小写字母
小写字母 - 32 = 大写字母
\ 转义字符
转义字符(Escape Character)在C语言中用于表示那些不能直接在字符串中使用的字符,例如换行符、制表符等。C语言中使用反斜杠(\
)作为转义字符的标志。以下是一些常见的转义字符及其用途:
- 换行符:
\n
- 用于在字符串末尾添加一个换行。 - 制表符:
\t
- 用于添加一个制表符,相当于按下Tab键。 - 回车符:
\r
- 用于添加一个回车符。 - 单引号:
\'
- 用于在字符串中包含单引号。 - 双引号:
\"
- 用于在字符串中包含双引号。 - 反斜杠:
\\
- 用于在字符串中包含一个反斜杠。 - 垂直制表符:
\v
- 用于添加一个垂直制表符。 - 字符转义序列:如
\a
(响铃符)、\b
(退格符)、\f
(换页符)等。
3. 词法符号
3.1. 关键字(32个)
存储类型:auto(自动) static(静态) extern(外部引用) register(寄存器)
数据类型:int(整型) char(字符型) short(短整型) long(长整型) float(单精度浮点型) double(双精度浮点型) signed(有符号) unsigned(无符号)
构造数据类型:struct(结构体) union(共用体) enum(枚举)
选择结构:if else switch case default
循环结构:for while do goto break continue
其他:void(空类型) typedef(重定义类型) volatile(防止编译器优化)
const(常量化:只读) sizeof(计算数据所占空间大小) return(返回值)
栈区:局部变量 由系统自动开辟空间、自动释放
堆区:由程序员手动开辟空间malloc,手动释放空间free
全局区/静态区:全局变量(全局区) static修饰的变量(静态区)
常量区:char *p="hello"; 存放常量(程序在运行的期间不能够被改变的量,例如: 10,字符串常量"abcde",数组的名字等)
3.2. 标识符
命名规则:
- 由字母、数字、下划线组成
- 开头不能是数字
- 不能和关键字重名
- 最好见名知意
3.3. 运算符
算术运算符 逻辑运算符 关系运算符 位运算符 三目运算符 赋值运算符
3.3.1. 算数运算符
+ - * / % ++ --
整数相除,结果向下取整
%取余
++
1)独立成句
a++;++a;相同,等同于a = a+1
2)赋值运算中
++在后,先赋值后自加;++在前,先自加后赋值
3)打印语句中
++在后,先打印后自加;++在前,先自加后打印
--同理
3.3.2. 逻辑运算符
&&(逻辑与):全真为真,一假为假
||(逻辑或):一真则真,全假为假
!(逻辑非):非真则假,非假则真
截断法则:
在逻辑与运算中:如果前面的表达式为假,则后面的表达式不执行,返回假
在逻辑或运算中:如果前面的表达式为真,则后面的表达式不执行,返回真
3.3.3. 关系运算符
> < >= <= == !=
3.3.4. 位运算符(二进制数 0 1)
& | ^ ~ << >>
&(位与):全1则1,有0则0
| (位或):有1则1,全0则0
^(异或):不同为1,相同为0
~(取反):0变1,1变0
<<(左移):左移几位,右边补几个0
>>(右移):右移几位,左边补几个符号位(正数0,负数1)
置1:二进制数|(1<<n)
例:11001000 | 00000100 (1<<2)=11001100
置0:二进制数&(~(1<<n))
例:11001000 & 11110111 (~(1<<3))=11000000
原码 反码 补码
原码 | 反码 | 补码 | |
正数 | 本身 | 本身 | 本身 |
负数 | 本身 | 除符号位,其他位按位取反 | 反码+1 |
3.3.5. 三目运算符
表达式1?表达式2:表达式3
执行顺序:判断表达式1是否成立,如果成立就执行表达式2,否则执行表达式3
3.3.6. 赋值运算符
= += -= *= /= %=
num = 3;
num += 3; // num = num +3;
3.3.7. 运算符优先级
口诀:单算移关与 异或逻条赋 从右向左单条赋
单目运算符 ! ~ ++ --
算术运算符 * / % + -
移位运算符 << >>
关系运算符 < <= > >= == !=
位与运算符 &
异或运算符 ^ |
逻辑运算符 && ||
条件运算符 ?:
赋值运算符 = += -= *= /= %=
4. 变量
4.1. 定义格式
存储类型 数据类型 变量名
存储类型:决定变量存储的位置
数据类型:决定变量开辟的空间大小
数据类型 | 名称 | 字节大小 | 取值范围 |
char | 字符型 | 1 | -2^7 ~ 2^7-1 |
short | 短整型 | 2 | -2^15 ~ 2^15-1 |
int | 整型 | 4 | -2^31 ~ 2^31-1 |
long | 长整型 | 32位:4 64位:8 | |
float | 单精度浮点型 | 4 | 有效位数6-7位 |
double | 双精度浮点型 | 8 | 有效位数15-16位 |
变量名需要遵循标识符命名规则
4.2. 变量分类
全局变量 局部变量
全局变量 | 局部变量 | |
定义位置 | 函数体外部 | 函数体内部 |
未初始化 | 值为0 | 随机值 |
存储位置 | 全局区 | 栈区 |
生命周期 | 同整个程序共存亡 | 随着函数的结束而结束 |
作用域 | 整个程序 | 当前函数体内部 |
局部变量和全局变量可以同名,作用域遵循就近原则
5. 常量
概念:在程序运行中不会发生变化的量
5.1. 字符型常量
使用单引号' '包裹的内容都叫字符,单引号只能引一个字符
'a'--->字符常量a
a --->变量a
'!'--->字符!
'1'--->字符1
'\n'-->换行
\:转义 后面可以跟随 字母 数字 符号(转义字符表示一个字符)
5.2. 字符串常量
使用双引号" "包裹的内容都叫字符串,系统会自动在字符串最后添加\0
\0:作为字符串结束的标志
"hello"--->字符串hello 大小:5+1=6
5.3. 整型常量
整数:100 2
5.4. 浮点型常量
小数:2.12 3.14
5.5. 指数常量
3*10^2--->3e2
2*10^-3--->2e-3
注意:e的后面不能是小数 只能是整数
5.6. 标识常量
宏定义:用于标识常量或表达式 宏替换 宏代替
定义格式:#define 宏名 (一般大写)常量或表达式
例:
#include<stdio.h>
#define N 10+10
int main( )
{
printf("%d\n",N*10); //10+10*10=110
}
特点:只做单纯的替换 不进行计算(原样替换)