机器语言 —— 010101010101
汇编语言 —— MOV R1,#1
针对寄存器
移植性差
高级语言
C JAVA Python Html ...
针对不同的处理器,只需要换编译器就行
(1)gcc编译器
Ubuntu是linux的发行版,gcc是Linux开发人员首选的编译工具
/1.gcc的作用
gcc xxx.c 生成 a.out
gcc xxx.c -o xxx 生成指定文件名的可执行程序
将c语言编译成机器能识别的二进制语言
/2.gcc的四步编译
1).预处理
展开头文件,删除注释,替换宏定义。
gcc -E hello.c -o hello.i
2).编译
检查语法错误,语法错误打印错误信息,正确打印生成汇编文件。
gcc -S hello.i -o hello.s
3).汇编
将汇编语言生成二进制目标文件。
gcc -c hello.s -o hello.o
4).链接
链接库文件,生成机器能识别的二进制文件
gcc hello.o -o hello
(2)变量
概念:在程序运行过程中发生改变的量。
定义格式:
【存储类型】 【数据类型】 变量名
存储类型:
决定存储位置
auto(自动型):缺省储存类型定义变量时,默认auto型
static(静态型):
static的作用延长生命周期,限制作用域。
局部变量:
未赋初值初值为0;
存的位置:全局区(静态区)
生命周期:同程序共存亡
作用域:仍然是所在函数
全局变量:
将全局变量作用域限制在了本文件内。
extern(外部引用类型):当引用同一程序不同文件的变量时,需要加extern修饰
register(寄存器类型):当变量需要被多次读取时,为提高程序运行效率,可定义成寄存器类型
数据类型:
决定占内存的空间大小
类型 类型名 字节数 取值范围
char ——字符型 1 -2^7~2^7-1
short——短整型 2 -2^15~2^15-1
int——整形 4 -2^31~2^31-1
long——长整型 4 -2^31~2^31-1
float——单精度浮点型 4 教材33页
double——双精度浮点型 8
关键字:sizeof(变量名或类型) = 所占字节数
变量名:遵循标识符的命名规则
1)由数字、字母、下划线组成
2)开头首字母不能是数字
3)不能与关键字重名
分类:
局部变量
定义位置:定义在函数体内部
初值:未赋初值为随机值
存储位置:栈区
生命周期:同所在函数共存亡
作用域:作用于所在函数
全局变量
定义位置:定义在函数体外
未赋初值为0
存储位置:全局区
生命周期:同整个程序共存亡
作用域:整个程序
(3)数据的储存方式及取值范围
数据的存储方式:
1)所有数据都是以二进补码形式存储于计算机中
2)正数的原码、补码、反码都相同
3)负数的原码保留符号位其余位取反得到反码,反码加一得到补码。
char的取值范围
1字节 = 8位
signed char:有符号char
最高位为符号位,其余七位为数据位:
最大:0111 1111:127
最小:1000 0000:-128
取值范围: -128~127
unsigned char 无符号char
8位都是数据位:
最大1111 1111:255
最小0000 0000:0
取值范围: 0~255
(4)内存分区
| 栈区:由系统自动开辟的空间
|--------------------------------------------------------
| 堆区:由用户手动开辟的空间 malloc free
|--------------------------------------------------------
| 全 .bss:未初始化的静态变量和全局变量
|
局 ------------------------------------------
| 区 .data:已初始化的静态变量和全局变量
|----------------------------------------------------
|
常量区:常量、字符串等
|-------------------------------------------------------
| .txt
:代码段
(5)常量
概念:在程序的运行过程中其值不发生改变的量
分类:
1) 字符常量
'A' '!' '@' '0'
'A' 65 '\'转义字符 '\x41'
2) 字符串常量
"hello" "A"
字符串的末尾是'\0'
3)整型常量
整数 1 2 1000
4)浮点型常量
小数 0.000 1.0
5)指数常量
2*10^8 =》 2e+8
6)标识常量
宏定义:起标识作用
#define 宏名 常量或者表达式
特点:原样替换:先替换再运算,替换是不要加括号
(6)强制类型转换
(强转的类型) 变量或常量
高位转低位可能会导致数据丢失
整数相除,向下取整
(7)大小端
多字节数据在内存中按一定顺序存储,这个存储顺序为大小端
小端存储:低位数据存储在低地址,高位数据存储在高地址
大端存储:相反
将多字节数据进行强转截取一个字节查看其内容
(8)词法符号:了解
(9)关键字(32个)
概念:系统预定义的的有特殊功能的符号
存储类型:auto、extern、static、register
数据类型:char、short、int、long、float、double、signed、unsigned
构造类型:struct(结构体)、union(共用体)、enum(枚举类型)
选择结构:if、else、case、switch、default
循环结构:for、while、goto、do、break、contonue
其它:void(空)、typedef(重定义)、volatile(防止被编译器优化)、const(只读修饰)、sizeof(计算占用字节数)、return(返回)