|
|
Hello World! |
// my first program in C++#include <iostream>#)开头的行是由所谓的预处理器读取和解释的指令。它们是在程序本身开始编译之前被解释的特殊行。在这里,指令 #include <iostream> 指示预处理器包含一段名为头文件 iostream 的标准 C++ 代码,该代码允许执行标准的输入和输出操作,例如将本程序的输出(Hello World)写入屏幕。int main ()int)、一个名称(main)和一对圆括号(())依次构成,括号内可以任选地包含参数。main 的函数在所有 C++ 程序中都是一个特殊的函数;它是程序运行时被调用的函数。所有 C++ 程序的执行都从 main 函数开始,无论该函数在代码中的实际位置在哪里。{ 和 }{)表示 main 函数定义的开始,第 7 行的右大括号(})表示其结束。这两个大括号之间的所有内容都是函数体,它定义了当 main 被调用时会发生什么。所有函数都使用大括号来表示其定义的开始和结束。std::cout << "Hello World!";std::cout,它标识了标(standard)准(dard)字(character)符(output)输出设备(通常是电脑屏幕)。其次,是插入运算符(<<),它表示后面的内容被插入到 std::cout 中。最后,引号内的句子("Hello world!"),是插入到标准输出中的内容。;)结尾。这个字符标志着语句的结束,就像英文中的句号结束一个句子一样。所有 C++ 语句都必须以分号字符结束。C++ 中最常见的语法错误之一就是忘记用分号结束语句。// 开头)。有一行是给预处理器的指令(以 # 开头)。有一行定义了一个函数(在此例中是 main 函数)。最后,还有一行是以分号结尾的语句(向 cout 插入内容),它位于 main 函数的大括号({ })界定的代码块内。 |
|
|
|
;)来指定的,将其分成不同的行对此目的而言根本不重要。许多语句可以写在一行,或者每个语句可以单独占一行。将代码分成不同的行仅仅是为了让阅读它的人类觉得更易读、更清晰,但对程序的实际行为没有影响。 |
|
Hello World! I'm a C++ program |
std::cout 执行了两次插入操作。再次强调,将代码分成不同的行仅仅是为了提高程序的可读性,因为 main 函数完全可以有效地定义成这样: |
|
|
|
# 开头的那些)不属于这个通用规则,因为它们不是语句。它们是在正式编译开始之前由预处理器读取和处理的行。预处理器指令必须单独占用一行,并且因为它们不是语句,所以不必以分号(;)结尾。cout 而不是 std::cout 的情况。两者都指向同一个对象:前者使用其非限定名称(cout),而后者则直接在命名空间 std 中对其进行限定(如 std::cout)。cout 是标准库的一部分,标准 C++ 库中的所有元素都在一个所谓的命名空间(namespace)中声明:即命名空间 std。std 命名空间中的元素,程序要么对库中元素的每一次使用都进行限定(就像我们通过在 cout 前加上 std:: 所做的那样),要么引入其组件的可见性。引入这些组件可见性的最典型方式是通过 using 声明: |
|
std:: 前缀)访问 std 命名空间中的所有元素。cout 进行非限定使用,如下所示: |
|
Hello World! I'm a C++ program |
std 命名空间元素的两种方式(显式限定和 using 声明)在 C++ 中都是有效的,并且产生完全相同的行为。为简单起见并提高可读性,这些教程中的示例将更常用后一种带 using 声明的方法,但请注意,显式限定是保证永远不会发生名称冲突的唯一方法。编译器 | 目录 | 变量与类型 |
注释
如上所述,注释不影响程序的操作;然而,它们提供了一个重要的工具,可以直接在源代码中记录程序的功能和运行方式。C++ 支持两种注释代码的方式:
第一种,称为行注释,会忽略从双斜杠符号(
//)出现处到该行末尾的所有内容。第二种,称为块注释,会忽略从/*字符到首次出现的*/字符之间的所有内容,并且可以包含多行。让我们为我们的第二个程序添加注释:
如果在程序的源代码中包含了注释,但没有使用注释字符组合
//、/*或*/,编译器会把它们当作 C++ 表达式,这极有可能导致编译失败并出现一个或多个错误信息。