C语言的运行过程:
1.编写源代码:
使用文本编辑器(如Notepad++, Visual Studio Code, Sublime Text, 或者专门的IDE如Visual Studio, Code::Blocks等)编写C语言代码。代码文件通常以.c为后缀。
2.预处理(Preprocessing):
在编译之前,C预处理器会处理源代码文件中的预处理指令(如#include,#define等)。#include指令会告诉预处理器将其他文件的内容包含进来,#define会定义宏等。预处理后的结果通常是一个扩展了宏定义和包含了所需头文件内容的中间文件,但这个文件通常不直接生成或保存。
3.编译(Compilation):
编译是将预处理后的代码转换成机器码(或更常见的是,转换成汇编语言,然后再转换成机器码)的过程。编译器(如GCC, Clang, MSVC等)读取.c文件,检查语法错误,然后将代码转换成机器可以理解的指令。如果编译成功,编译器会生成一个或多个目标文件(在Unix-like系统中通常是.o或.obj文件,在Windows中可能是.obj文件)。
4.链接(Linking):
如果程序中使用了库函数或其他自定义的函数,并且这些函数定义在不同的源文件中,那么这些目标文件(以及任何需要的库文件)需要被链接器合并成一个可执行文件(在Windows中通常是.exe文件,在Unix-like系统中没有特定扩展名,但可以通过文件权限来识别)。链接器还会处理外部依赖,如系统库。
5.运行(Execution):
生成的可执行文件被加载到内存中,由操作系统执行。程序开始运行,执行其中的指令,包括输入输出操作、数据处理等。
6.调试(Debugging):
如果程序在运行过程中出现错误或不符合预期的行为,开发者可能会使用调试器来查找问题。调试器允许开发者逐步执行代码,检查变量的值,跟踪程序执行流程等,从而找到并修复错误。
简单的C语言程序:
例子:
要求在屏幕上输出一下行信息:
Hello world
解题思路:在主函数中用print函数原样输出以上文字。
编写程序:
#inclued<stdio.h> \\这是编译预处理指令
int main() \\定义主函数
{ \\函数开始标志
printf("Hello world"); \\输出所指定的一行信息
return 0; \\函数执行完毕时返回函数值0
} \\函数结束的标志


例子:求两个整数之和
解题思路:设置三个变量,a和b用来存放两个整数,sum用来存放和数。用赋值运算符“=”把相加的结果传送给sum
#include<stdio.h> \\这是编译预处理指令
int main() \\这是编译预处理指令
{ \\函数开始标志
int a,b,sum; \\本行是程序的声明部分,定义a,b,sum为整数变量
a=123; \\对变量a赋值
b=456; \\对变量b赋值
sum=a+b; \\进行a+b的运算,并把结果存放在变量sum中
printf("sum is %d\n",sum); \\输出结果
return 0; \\使函数返回值为0
} \\函数结束

