编译
input (键盘)--> 硬盘 --> ./a.out(事先编译好,起始地址) -->
内存 --> cpu去内存中读 --> 指令(操作码,地址码) --> 操作码给控制器
--> 从地址中取值给cpu内部寄存器 --> 运算器做运算 --> 运算结果给输出部分;
c关键字:
1.基本数据类型:
char double float int long short void
2.构造数据类型:
enum struct union
3.修饰数据类型:
auto const extern register signed static unsigned volatile
4.自定义类型
typedef
4.控制语句:
break case continue do else goto for if switch while default
5.其他:
return sizeof
gcc hello.c ==> a.out (可执行文件)
cc hello.c ==> a.out
(unix之前的编译器)
make hello ==> cc hello.c -o hello
写程序的步骤:
1. 确定目标; 显示一个hello world!
2. 设计程序; 1) printf 2) array 3) char * ...
顺序结构 条件 循环;
3. 编写程序;
io接口: stdio.h printf
入口函数: main
4. 编译程序;
gcc hello.c
1) gcc -E 预处理; 执行预处理命令;
2) gcc -S 编译; .c ==> .s 编成汇编代码;
3) gcc -c 汇编; .s ==> .o 把汇编编成2进制文件;.o不能执行;
4) ld 链接; .o ==> 可执行文件; 可执行;
-lm手动链接 c库是自动链接;
5. 执行; 测试;
6. 调试;
1) 语法错误;
2) 逻辑错误;
3) 警告错误;
7. 维护;
预处理: gcc -E hello.c -o hello.i
^ 生成目标; hello.i
编译: gcc -S hello.i -o hello.s
^ 编译;
汇编: gcc -c hello.s -o hello.o
^ 目标文件; 有elf头的2进制文件;不可执行的;
链接: gcc hello.o -o hello
^ 可执行;
-------------------------------------------------
sizeof(int) : 返回操作数所占的字节数;
^
sizeof(array) :
int i;
sizeof(i);
程序用于管理数据;
c支持的数据类型: 所占字节数; 取决于平台和编译器;
int : c没有规定int是几个字节; 32位平台: 4个字节;
int : 字长; 32 ==> 4个字节; 16平台下2个字节;
char = 1 : char就是一个字符; 一个字节;
short = 2 : c 规定; short <= int; short的size可以等于int; 16平台下2个字节;
long = 4 : c 规定; long >= int; long的size可以等于int; 16平台下4个字节
float = 4
double = 8
long long = 8
long double = 12
long float X
long int ==> long
short int ==> short
unsigned int short char long
不能修饰float double
- 上一篇:GNU内嵌汇编
- 下一篇:Lazarus实战开发之串口通信(WINCE/WIN32)