前言
`本文仅仅记录个人学习Linux过程
一 Gcc编译器
gcc first.c //默认生成一个a.out
gcc first.c -o app //生成一个app
gcc -o app first.c
1.预处理阶段
gcc first.c -E (first.i)
头文件的展开;
条件编译;
#if
#endif
#define 宏
2.编译
把预处理后的文件编成汇编文件
gcc frist.c -S (first.s)
3.汇编
把汇编文件编成机器认识的二进制文件
gcc first.c -c (first.o)
4.链接
把二进制文件链接成为可执行的文件a.out
二 计算机的基本结构
输入设备:键盘,鼠标等
输出设备:显示屏,耳机等
存储器:磁盘;
运算器:用于运算;
控制器:用于控制;
三 计算机数据表示(进制)
1.十进制(0-9):逢十进一
基数:10
123 : 1*100 + 2*10 + 3
1*10^2 + 2*10^1 + 3*10^0;
2.二进制(0、1):逢二进一 0b1101
基数:2
1101: 1*2^3 + 1*2^2 +0*2^1 + 1*2^0 = 11;
3.十六进制(0-9,a,b,c,d,e,f) :逢十六进一 0x4a8
基数;16
4a8: 4*16^2 + 10*16^1 + 8*16^0 = 1024 + 160 + 8
4.八进制(0-7):逢八进一 0456
基数:8
456: 4*8^2 + 5*8^1 + 6*8^0 = 4*64 +40 + 6 = 302
进制之间的相互转换:
十进制<==>二进制<==>八、十六进制
短除法
凑方法
四、关键字(32个)
1、数据类型 -8个
int、char、long、short、signed、unsigned、float、double
2、存储类型 -6个
auto、static、extern、register、const、volatile
3、语句 -12个
if、else、for、while、do、switch、case、return、break、continue、default、goto
4、构造 -3个
struct、union、enum
5、求字节 -1个
sizeof;
6、取别名 -1个
typedef;
7、空类型 -1个
void;
五、标识符
标识符的命名规则:
1.只能由字母,下划线和数字构成;
2.不能以数字开头;
3.不能与关键字重复;
六,运算符
算数运算符:+ - * / %
逻辑运算符:! && ||
关系运算符:< > == <= >= !=
位运算符:~ & | ^ >> <<
赋值运算符:= += -= *= /=
自增自减:++ --
地址运算符:* &
三目运算符:?: 语句1?语句2:语句3
逗号运算符:,
求字节:sizeof
七分隔符
空格符、Tab、换行、注释
八,数据类型
机器码: 二进制的形式;
1字节 = 8位的二进制数;
signed 有符号;
unsigned 无符号;
数据类型:
字符型:char --1个字节
signed char -2^7 -- 2^7-1
unsigned char 0- 2^8-1
'a';'\n';' '
字符串:字符串以'\0'结束;
"hello world"
"a"
整形:
int -- 4个字节
signed int -2^1 -- 2^31-1
unsigned int 0 -- 2^32-1
short -- 2个字节 只能存放16位;
signed short
unsigned short
long -- 4个字节(32位)
8个字节(64位)
signed long
unsigned long
long long --8个字节 可以存放64位的数据
signed long long
unsigned long long
浮点型(实型):
float -- 4个字节
signed float
unsigned float
double -- 8个字节
signed double
unsigned double