## 1.5 第一个程序 按照惯例,人们用新语言编写的第一个程序叫做“Hello World”。因为它所做的所有事情就是输出“Hello,World”。在C++中,这个程序是这样的: ~~~ #include <iostream.h> // main: generate some simple output void main () { cout << "Hello, world." << endl; return 0; } ~~~ 有些人根据“Hello World”程序的简洁程度评判编程语言的质量。按照这个标准, C++做得相当不错。即便如此,这个简单的程序里依然包含着很难对编程新手解释的某些语言特性。现在,我们会先忽略其中一部分,比如第一行。 第二行以“//”开头,代表__注释__。注释是指在程序中插入的用于解释程序行为的一些文字。当编译器看到“//”时,它会忽略从该位置开始到行尾的整行内容。 第三行,你暂时可以忽略`void`,但是请注意`main`。`main`是指示程序入口点的特殊命名。当一个程序开始执行时,它从main中的第一条语句按顺序执行直到末尾,然后退出。 `main`中的语句数目没有限制,但是该例子只包含一条。这是一条基本的输出语句,表示在屏幕上输出或者显示一条消息。 `cout` 是由系统提供的允许你把内容输出到屏幕的特殊对象。`<<`符号是一个操作符,表示将一个字符串应用于cout。这会使该字符串显示在屏幕上。 endl也是一个特殊符号,代表一行的结束。当发送`endl`给`cout`时,屏幕上的光标会移动到下一行。所以,当下一次输出时,新的内容会在下一行显示。 像所有语句一样,输出语句也是以分号结尾。 你还需要注意这个程序中的其他一些小符号。首先,C++使用花括号(“{”和“}”)对内容分组。在这种情况下,输出语句包含在花括号里,意味着它在main的定义内部。同时,注意语句的缩进,它可以直观地显示该定义的内部都有哪些行。 现在,你可以坐在电脑前自己编译并运行这个程序。具体实现的细节取决于你的编程环境,但是从现在开始,我假定你知道应该如何做。 如前所述,C++编译器对语法检查很严格。当你编写程序时出现任何错误,编译都很有可能不成功。比如,你拼写错了`iostream`,你可能会得到以下错误消息: ~~~ hello.cpp:1: oistream.h: No such file or directory ~~~ 这一行包含大量隐蔽密集的信息,并不容易读懂。一个更友好的编译器可能会这样表述: “hello.cpp源代码文件第一行,尝试引用头文件oistream.h。找不到该文件,只找到文件iostream.h。这是否可能是你需要的?” 遗憾的是,很少有编译器这么友好。编译器并不智能,大多数情况下你得到的错误消息只是一个关于错误的提示。学会解析编译器的消息需要花一些时间。 尽管如此,编译器依然是学习语言语法规则的有力工具。从一个可以正常运行的程序入手(比如`hello.cpp`),用不同的方法修改它并查看结果。如果你得到错误消息,记住错误消息的内容以及导致错误的原因,这样下次再看到的时候就能够知道它是什么意思。