声明
本文内容若有侵权,请联系我们;转载本公众号原创文章和原创插图时,请注明出处。
学习一门新的编程语言的唯一方法就是用它写程序。第一个程序对所有的语言来说都一样:
Print the words打印这些单词
hello, world你好,世界
这是个大的障碍;跨越它,你必须能够在某些地方创建程序文本,成功编译它,加载,运行,并找到你的输出。掌握了这些机器细节,其他的事情都相对简单。
在C语言中,打印出“hello,world”的程序如下:
如何运行这个程序取决于你使用的系统。这里给出一个特殊的例子,在UNIX操作系统上,你必须创建一个以“”结尾命名的程序文件,如,然后用命令编译它。如果你没有搞砸任何事,如遗漏一个字母或者拼错单词,汇编器将安静地运行并且产生一个名为的可执行文件,如果你通过敲出命令运行它,它将会打印出:hello,world。
在其他系统,规则会不同;跟当地的专家联系。(译者注:初学者可跳过以上论述,直接用VC++等编写并执行。)
现在就这个程序本身给出一些解释。一个C程序,无论它多大,都由函数和变量组成。一个函数包含一些语句和变量,语句指定计算操作执行,变量存储计算过程中用到的值。C函数与Fortran语言中的子程序和函数以及Pascal语言中的函数相似。我们的例子是一个名为的函数,正常情况下,你可以自由命名函数,但很特殊——你的程序从函数的开头开始执行。这意味着每个程序必须在某些位置有一个函数。
函数经常会调用其他函数来辅助完成工作,有些是你自己编写的,其他的则是函数库提供给你的。这个程序的第一行告知编译器包含标准输入输出函数库中的信息。这一行在许多C的源文件的开头出现。标准库在第七章和附录B叙述。
函数间交换数据的方法之一是给要调用的函数提供一系列值,这些值被称作参数。函数名后的小括号包围着参数列表。本例中,函数被定义成一个无参数函数,用空的列表表明。
一个函数的所有语句被一对大括号包围着。函数仅包含一条语句 。通过写出函数名,后跟小括号内的参数列表可调用该函数,所以这条语句调用了函数,并赋予参数 。是一个库函数,它会将双引号之间的字符串打印输出。
双引号中的一系列字符,像 ,被称作一个字符串或字符串常量。目前,我们只将字符串用作以及其他函数的参数。
字符串中的连续片段是C语言中“换行符(newline character)”的记号,会在输出打印后将光标移到新一行的左边界。如果你遗漏了(值得尝试),你会发现输出打印后,没有新的一行。你必须在函数的参数中使用,来包含换行符,如果你做出了这样的尝试:
C编译器会产生一个错误信息。
函数不会自动换行,因此逐步建立一个输出行可以几次调用它。我们第一个例程也可以写作如下形式产生完全相同的输出:
注意到,为一个简单字符,像这样的转义字符提供一个通用的可扩展的结构,可以替代难以打印的或隐匿的字符(译者注:因为C语言中使用了一些符号作为程序格式控制,例如双引号 " 被用来确定包围的是字符串,但有时我们也需要打印出双引号,故用转义字符表示;当然转义字符也有其他的功能,后续会叙述相关内容)。其中,C语言提供的其他的转义字符有:水平制表符,空格符,双引号,一个反斜杠。完整的列表见2.3节。
:在你的系统上运行“hello,world”程序,体验下遗漏程序中的某个部分,看看你会获得什么错误信息。
:体验下,当函数的参数中包含时,会发生什么。是上面没有列出的字符。
[译者注]由于本书作者写作的年代比较久远,其中很多的规则发生了变化,有兴趣的同学可以去搜索下C语言的发展史。这里给出现在标准的C例程,它可以在目前的编译器中运行通过,如下:
领取专属 10元无门槛券
私享最新 技术干货