我所采用的编译环境为VS2012。
首先看一个简单的C语言程序,其中#include "stdafx.h"头文件为编译器自动生成:
#include "stdafx.h"
#include
int main(void)
{
int num;
num=1;
printf("I am a simple");
printf("computer.\n");
printf("My favorite number is %d because it is first.\n",num);
return 0;
}
#include
#include这行代码是一条C预处理指令,通常,C编译器在编译前会对源代码做一些准备工作,即预处理。
所有的C编译软件包都提供stdio.h文件,该文件中包含了供编译器使用的输入和输出函数(如printff())信息,该文件名的含义是标准输入/输出头文件。
int main(void)
C程序一定是从main()函数开始执行。除了main()函数,可以任意命名其他函数,而且main()函数必须是开始的函数。
int是main()函数的返回类型,表明main()函数返回的值是整数,返回给操作系统。
函数名后面的圆括号中包含一些传入函数的信息,该例中没有传递任何信息,因此,圆括号里是void。
C语言的注释有两种:一种是 /* */ ,还有一种是 // 。
例如:
1. /* 这是一条C语言注释*/
2. /*这也是一条注释,
被分成两行。*/
3. /*
也可以这样注释
*/
4. int rigue; // 这种注释只能写一行
{
.......
}
一般而言,所有的C函数都使用花括号标记函数体的开始和结束。
int num;
这行代码叫声明,声明是C语言最重要的特性之一。该声明完成了两件事:其一,在函数中有一个名为num的变量。其二,int表明num是一个整数。 int是一种数据类型,编译器使用这些信息为num变量在内存中分配储存空间。
int是一个关键字,表示一种基本的C语言数据类型。
示例中的num是一个标识符,也就是一个变量、函数或其他实体的名称。
在C语言中,所有的变量都必须先申明才能使用,这意味着必须列出程序所用到的所有变量名及其类型。为了很好的与旧系统兼容,这里统一把变量声明在块的顶部,其他语句不能再任何申明的前面。示例如下:
int main()
{
int doors;
int dogs;
doors = 5;
dogs = 3;
}
可以用小写字母、大写字母、数字和下划线来命名。而且,名称的第一个字符必须是字符或下划线,不能是数字。
有效的名称 | 无效的名称 |
wiggles | $Z]** |
cat2 | 2cat |
Hot_Tub | Hot-Tub |
taxRate | tax rate |
_kcab | don't |
num = 1;
赋值表达式语句语句从右侧把值赋到左侧,这行代码的意思是“把值1赋给变量 num ”。在执行i nt num; 声明时,编译器在计算机内存为变量num预留了空间,然后在执行这行赋值表达式语句时,把值储存在之前预留的位置。
printf("I am a simple");
printf("computer.\n");
printf("My favorite number is %d because it is first.\n",num);
printf 是一个函数名,圆括号中的内容是从main()函数传递给printf()函数的信息。
第1行printf()演示了在C语言中如何调用函数。只需输入函数名,把所需的参数填入圆括号即可。当程序运行到这一行时,控制权被转给已命名的函数(该例中式printf())。函数执行结束后,控制权被返回至主调函数,该例中是main()。
第2行printf()函数中的\n字符并未输出。\n的意思是换行。换行符是一个转义序列,转义序列用于代表难以表示或无法输入的字符。如\t代表Tab键,\b代表Backspace键,每个转义序列都以反斜杠字符 (\)开始。
第3行中的 % 提醒程序,要在该处打印一个变量,d 表明把变量作为十进制整数打印。printf() 函数名中的 f 提醒用户,这是一种格式化打印函数。printf() 函数由多种打印变量的格式,包括小数和十六进制整数。
return 0;
int main(void)中的 int 表明main()函数应返回一个整数。C标准要求main()这样做,有返回值的C函数要有 return 语句。该语句以 return 关键字开始,后面是待返回的值,并以分号结尾。如果遗漏main()函数中的 return 语句,程序在运行至最外面的花括号时会返回0。
示例:
int main(void) /* 把2英寻转换成英尺 */
{
int feet,fathoms;
fathoms = 2;
feet = 6*fathoms;
printf("There are %d feet in %d fathoms!\n",feet,fathoms);
return 0;
}
#include "stdafx.h"
#include
void butler(void); /* C函数原型 */
int main(void)
{
printf("I will summon the butler function.\n");
butler();
printf("Yes.Bring me some tea and writeable DVDS.\n");
return 0;
}
void butler(void) /* 函数定义开始 */
{
printf("You rang,sir?\n");
}
butler() 函数在程序中出现了3次。第一次是函数原型,告知编译器在程序中要使用该函数;第2次以函数调用的形式出现在 main() 中;最后一次出现在函数定义中,函数定义即是函数本身的源代码。
易犯错误:n2为n的平方,n3为n的立方。
auto | extern | short | while |
break | float | signed | _Alignas |
case | for | sizeof | _Alignof |
char | goto | static | _Atomic |
const | if | struct | _Bool |
continue | inline | switch | _Complex |
default | int | typedef | _Generic |
do | long | union | _Imaginary |
double | register | unsigned | _Noreturn |
else | restrict | void | _Static_assert |
enum | return | volatile | _Thread_local |
最后,来说一下程序的输出在屏幕上一闪而过的问题。某些窗口环境会在单独的窗口运行程序,然后在程序运行结束后自动关闭窗口。一种解决方法是:
在程序的return语句中添加一行代码:getchar();
这行代码会让程序等待击键,窗口会在用户按下一个键后才关闭。