🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
习惯上,人们学习一门新语言时写的第一个程序都是“Hello,World.”,它只是输出“Hello,World.”这句话。下面是C++版本1: ~~~ #include <iostream.h> // main: 生成一些简单的输出 void main () { cout << "Hello, world." << endl; return 0 } ~~~ 有些人喜欢通过“Hello,World.”程序是否简洁来判断编程语言的质量。如果以此为标准,C++相当不错。即便如此简洁,这个程序中还是有几个特性不容易给初学者解释清楚。我们暂且忽略这种不易理解的特性,比如第一行的`#include`语句。 第二行以“//”开始,它表明这句话是**注释**。注释是可以放入程序中的英语文本,用以解释程序的意图。当编译器读取到“//”时,会忽略从“//”开始直到行尾的所有字符。 在第三行中,你暂时先别理会单词`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`)练手,以各种方式修改它,看看会发生什么。如果碰到错误信息,记住消息说了什么以及是什么原因导致的错误,下次再遇到的时候就知道错误信息的意义了。 **1**.按照C++规范,返回值应为int类型,但本书第5章才会介绍有返回值的函数,这里暂且用void,第5.9节会有相关说明。——译者注