编译原理:
1.预处理
将.c文件生成.i文件
gcc命令:-E
eg:gcc hello.c -E -o hello.i
2.编译
将.i(C语言文件)文件生成.s(汇编文件)文件
gcc命令:-S
eg:gcc hello.i -S -o hello.s
3.汇编
将.s文件(汇编文件)生成.o文件(二进制文件)
gcc命令:-c
eg:gcc hello.s -c -o hello.o
4.链接
将.o文件(二进制文件)生成.exe(可执行文件)
gcc命令:-o
eg:gcc hello.o -o hello.exe
一步编译:gcc hello.c -o hello.exe
CPU与寄存器:
硬盘-内存-寄存器是CPU和内存之间的桥梁
关系:CPU (寄存器/高速缓存)<----------> 内存 <---------> 硬盘
CPU (寄存器): 将内存中的数据暂时放在寄存器中
CPU和内存之间通过总线(数据/地址/控制总线)交流
32位系统:总线是32位,寄存器是32位
64位系统:总线是64位,寄存器是64位
内存中的计量单位:
1Byte=8bit 1KB=1024B 1MB=1024KB 1GB=1024MB
常量:
1.数值常量:整数型常量、实数型常量
2.字符型常量:‘a’ 、‘b’
3.字符串常量:“hello world”
4.#define 宏常量:#define 常量名 常量值
5.const修饰的变量
关键字:
标识符命名规则:
1.字母、数字、下划线
2.不能以数字开头
3.区分大小写
4.不能是关键字
整型:
short 2字节 %hd int 4字节 %d long 4字节 %ld longlong 8字节 %lld
无符号整型
有符号整型:最高位表示符号位,0正数,1负数
举例:10U 无符号 %d 10L 有符号long %ld 10UL 无符号long %lu
变量:
有符号signed int a=10;
无符号unsigned int a=10;
sizeof的使用:
sizeof(数据类型/变量)
作用:统计内存大小
sizeof(int)
字符型变量:存储对应字符的ASCII码
char 1字节 %c
举例:char word='a';
1.要用单引号,只能赋值一个字符
2.不能用双引号,双引号用于字符串