【C语言】Hello, world!
目录
/*
输出Hello, world!
*/
#include <stdio.h> /* 包含头文件 */
int main() // 主函数
{
printf("Hello, world!\n"); // 在屏幕上打印Hello, world!并换行
return 0;
}
1. C语言
C语言是贝尔实验室的Ken Thompson、Dennis Ritchie等人开发的UNIX操作系统的“副产品”。Thompson独自编写出了UNIX操作系统的最初版本,这套系统运行在DEC PDP-7计算机上。这款早期的小型计算机仅有16KB内存(毕竟那是在1969年)。
与同时代的其他操作系统一样,UNIX系统最初也是用汇编语言编写的。用汇编语言编写的程序往往难以调试和改进,UNIX系统也不例外。Thompson意识到需要用一种更加高级的编程语言来完成UNIX系统未来的开发,于是他设计了一种小型的B语言。Thompson的B语言是在BCPL语言(20世纪60年代中期产生的一种系统编程语言)的基础上开发的,而BCPL语言又可以追溯到最早(且影响最深远)的语言之一——Algol 60语言。
不久,Ritchie也加入到UNIX项目中,并且开始着手用B语言编写程序。1970年,贝尔实验室为UNIX项目争取到一台PDP-11计算机。当B语言经过改进并能够在PDP-11计算机上成功运行后,Thompson用B语言重新编写了部分UNIX代码。到了1971年,B语言已经明显不适合PDP-11计算机了,于是Ritchie着手开发B语言的升级版。最初,他将新开发的语言命名为NB语言(意为“New B”),但是后来新语言越来越偏离B语言,于是他将其改名为C语言。到了1973年,C语言已经足够稳定,可以用来重新编写UNIX系统了。改用C语言编写程序有一个非常重要的好处:可移植性。只要为贝尔实验室的其他计算机编写C语言编译器,他们的团队就能让UNIX系统也运行在那些机器上。
总结:
B语言创始人:Ken Thompson(肯·汤普森)
C语言创始人:Dennis Ritchie(丹尼斯·里奇)
UNIX创始人:Ken Thompson、Dennis Ritchie
2. 源文件
源文件(source file)一般指用汇编语言或高级语言写出来的代码保存为文件后的结果。
C语言源文件的拓展名为.c。
3. 注释
- /*……*/(注释一行或多行)
- //…… (只能注释一行)
4. #include指令和头文件
在编译C程序之前,预处理器会首先对其进行编辑。我们把预处理器执行的命令称为指令。
#include指令称为文件包含指令,通过#include指令,就可以把stdio.h头文件中的全部内容都读取到程序中。
stdio是指 “standard input & output"(标准输入输出),stdio.h是指标准输入输出头文件,该文件中包含了供编译器使用的输入和输出函数,如库函数printf的函数原型声明包含在stdio.h中。
5. main函数
- main函数又称主函数。
- main函数的位置是任意的。
- 一个工程中有且仅有一个main函数。
- main函数是程序的入口,代码从main函数的第一行开始执行。
int是main函数的返回类型,表明main函数的返回值的类型是整型。main函数的返回值是状态码:返回0,表示程序正常结束;返回非0值,表示程序异常结束。
main函数的写法:
// 一般写法
int main()
{
// ...
return 0;
}
// C90勉强接受,但C99和C11不接受的写法
main()
{
// ...
}
// 所有标准都不接受的写法
void main()
{
// ...
}
6. printf函数
printf函数是格式化输出函数(f源自为格式化format),是一个库函数,头文件stdio.h。
由C语言提供的这些为数众多的函数称为库函数(library function)。通常各个编译器在提供C语言规定的函数之外,还会提供各自不同的函数。具体内容请参考各编译器的说明书。
7. 语句
- 语句必须以分号结尾。
- 一行可以写多条语句。
- 开始执行程序后,代码中{}之间的语句会按顺序执行。
; // 空语句
8. return语句
return 表达式;
有返回值的C函数要有return语句。如果遗漏main函数中的return语句,程序在运行至最外面的右花括号( } )时会返回0。因此,可以省略main函数末尾的return语句(强烈建议不要省略)。但是,不要在其他有返回值的函数中漏掉它。
在main函数中执行return语句是终止程序的一种方法,另一种方法是调用exit函数,此函数属于<stdlib.h>头。传递给exit函数的实际参数和main函数的返回值具有相同的含义:两者都说明程序终止时的状态。
为了表示正常终止,传递0:
exit(0);
因为0有点模糊,所以C语言允许用EXIT_SUCCESS来代替(效果是相同的):
exit(EXIT_SUCCESS);
传递EXIT_FAILURE表示异常终止:
exit(EXIT_FAILURE);
EXIT_SUCCESS和EXIT_FAILURE都是定义在<stdlib.h>中的宏。EXIT_SUCCESS和EXIT_FAILURE的值都是由实现定义的,通常分别是0和1。
作为终止程序的方法,return语句和exit函数关系紧密。事实上,main函数中的语句
return 表达式;
// 等价于
exit(表达式);
return语句和exit函数之间的差异是:不管哪个函数调用exit函数都会导致程序终止,return语句仅当由main函数调用时才会导致程序终止。
更多推荐
所有评论(0)