一个简单的C语言程序如下:
#include <stdio.h>
int main()
{
printf("Hello world!\n");
return 0;
}
很显然,结果是在控制台打印出Hello World
1.其中:#include是预处理器指令,通常C编译器在编译前会对源代码做一些准备工作,即预处理.
#include<stdio.h>包含另一个文件,其中stdio.h是C编译器软件包的标准部分,
该文件名的含义是标准输入/输出头文件
2.int main(void)是函数名,int表明函数返回一个整数.C程序一定从main()函数开始执行.除了main函数你可以任意命名其他函数,而且main()函数必须是开始的函数.
圆括号的功能用于识别main()是一个函数.至于main返回一个整数返回到哪里呢?
这个后面再说。
注意:如果浏览旧式的代码或者老式的教材,你可以会发现程序以如下形式开始:
main()
C90勉强接受这种形式,但是C99和C11标准不允许这样写.因此,即使你的编译器允许,也不要这样写.
此外你有可能会看到以下形式
void main()
一些编译器允许这样写,但是所有的标准都不认可这样的写法,所以建议是使用标准的写法 int main(),只要坚持使用标准形式,把程序从一个编译器移到另一个编译器就不会出现什么问题.
3.注释
注释有两种写法,如:
//这是一条注释
/*这也是一条注释
并且可以注释很多行*/
// 这种注释只能写成一行,是C99的时候新增的一种注释
4.花括号、函数体和块
一般而言,所有的C函数都使用花括号标记函数体的开始和结束。这是规定,不能省略。只有花括号{}才能起到这种作用,其他都不行.
花括号还可以用于把函数体中的多条语句合并为一个单元或块
5.声明
#include <stdio.h>
int main()
{
int cats;
int dogs;
cats = 5;
dogs = 3;
.....
}
其中 int cats,这行代码叫做声明.声明是C语言最重要的特性之一.这个声明完成了两件事情.其一,在函数中有一个名为cats的变量。其二,int表明num是一个整数.int是一种数据类型。编译器使用这些信息为cats变量在内存中分配存储空间.其中分号在C语言中是大部分语句和声明的一部分,来表明当前语句的结束.
其中cats是一个标识符,也就是一个变量、函数或其他实体的名称。所有的变量必须先声明才能使用
此外,旧规则规定,要求把变量声明在块的顶部,其他语句不能在任何声明的前面,比如上面的例子.所有要注意的是:如果你使用了VC6这样的老版本编译器,出现了莫名其妙的错误,很有可能是你的变量声明的位置不正确.
对于新手学习C语言或者C++,我个人建议使用codeblocks或者Dev-C++
C99和C11遵循C++的规则,你可以把声明放在块中的任何位置,可以编写这样的代码:
#include <stdio.h>
int main()
{
int cats;
cats = 5;
//其他语句...
int dogs;
dogs = 5;
//其他语句...
}
6.命名
C99和C11允许使用更长的标识符名,但是编译器只识别前63个字符
可以用小写字母、大写字母、数字和下划线_来命名.而且,名称的第1个字符必须是字符或下划线,不能是数字.
比如有效的名字如:dogs, cats, count, cat2, taxRate, _pig
无效的名字如:2cat, tax rate, don’t, @$z**,
操作系统和C库经常使用一个或者两个下划线字符开始的标识符,因此最好避免在自己的程序中使用这种名称.C语言的名称区分大小写,因此cat和Cat和CAT都不同
7.赋值
int num;
num = 1;
其中num = 1;是一个赋值表达式语句,在执行int num;声明时,编译器在计算机内存中为变量num预留了空间,然后在执行这行赋值表达式语句时,把值储存在之前预留的位置.可以给num赋不同的值,注意,该赋值表达式语句从右侧把值赋到左侧
8.printf()函数
printf("Hello world!\n");
圆括号表面printf是一个函数名,其中\n 是一个转义序列。转义序列用来表示难以表示或无法输入的字符.比如\t代表Tab键,\b代表Backspace退格键,\n表示换行
9.return语句
return 0;
有返回值的C函数要有return语句