1 // my first program in C++ 2 #include <iostream> 3 4 int main() 5 { 6 std::cout << "Hello World!"; 7 } |
Hello World! |
上面的左面板显示了该程序的 C++ 代码。右侧面板显示了程序由计算机执行时的结果。
面板左侧的数字是行号,使讨论程序和研究错误更容易。他们不是该程序的一部分。
第 1 行: // my first program in C++
两个斜杠表示该行的其余部分是程序员插入的注释,但对程序的行为没有影响。
程序员使用它们来进行关于代码或程序的简短解释或观察。在这种情况下,它是程序的简要介绍性描述。
第 2 行: #include
<iostream>
以井号 ( #)开头的行是由预处理器读取和解释的指令。它们是在程序本身开始编译之前解释的特殊行。
在这种情况下,指令#include
<iostream>
指示预处理器包含一段标准 C++ 代码,称为头文件 iostream,
它允许执行标准输入和输出操作,例如写入该程序的输出(Hello World!) 到屏幕。
第 3 行:空行。
空行对程序没有影响。它们只是提高了代码的可读性。
第 4 行: int main ()
这一行开始了对一个函数的声明。
本质上,函数是一组被赋予名称的代码语句:
这样将把名称“main”赋予后面的代码语句块。
函数将在后面的章节中详细讨论,
但本质上,它们的定义是通过一系列类型 ( int )、名称 ( main ) 和一对括号 ( () )引入的,
可选选项包括参数。
命名main的函数是所有 C++ 程序中的一个特殊函数;它是程序运行时调用的函数。
所有 C++ 程序的执行都从main函数开始,而不管函数在代码中的实际位置。
第 5 行和第 7 行:"{"和"}"
第5 行的左大括号 ( { ) 表示main函数定义的开始,第7 行的右大括号 ( } ) 表示其结束。
这些大括号之间的代码都是函数的主体,它定义了main调用时会发生什么。
所有函数都使用大括号来表示其定义的开始和结束。
第 6 行: std::cout << "Hello World!";
这一行是一个 C++ 语句。语句是一种实际上可以产生某种效果的表达式。
它是程序的核心,表示其实际作用。语句的执行顺序与它们出现在函数体内的顺序相同。
该语句有三个部分:一是std::cout,它表示标准输出设备(通常,这是计算机屏幕)。
其次,写入运算符 ( << ),表示后面的内容被写入到 std::cout中。
最后,引号内的句子(“Hello world!”)是写入到标准输出中的内容。
请注意,该语句以分号 (;)结束。这个字符标志着语句的结束,就像句号结束句子一样。
所有 C++ 语句都必须以分号字符结尾。C++ 中最常见的语法错误之一是忘记以分号结束语句!
您可能已经注意到,在执行代码时,并非该程序的所有行都执行操作。
有一行包含注释(以 // 开头)。有一行带有预处理器的指令(以 # 开头)。
有一行定义了一个函数(在本例中为main函数)。最后一行包含以分号结尾的语句(写入到cout),
它位于由函数的大括号 ( { } )分隔的块内main。
该程序已按不同的行构建并适当缩进,以便阅读它的人更容易理解。
但是 C++ 对缩进或如何在不同行中拆分指令没有严格的规则。例如
1 int main () 2 { 3 std::cout << " Hello World!"; 4 } |
我们可以这样写:
int main () { std::cout << "Hello World!"; } |
全部在一行中,这与上面的代码具有完全相同的含义。
在 C++ 中,语句之间的分隔是用结束分号 ( ;)指定的,因此分隔成不同的行根本无关紧要。
许多语句可以写在一行中,或者每个语句都可以单独一行。
代码在不同行中的划分只是为了让可能阅读它的人更易读和更具示意图,
但对程序的实际行为没有影响。
现在,让我们在我们的第一个程序中添加一条额外的语句:
1 // my first program in C++ 2 #include <iostream> 3 4 int main() 5 { 6 std::cout << "Hello World!"; 7 std::cout << "I'm a C++ program"; 8 } |
Hello World! I'm a C++ program |
在这种情况下,程序std::cout在两个不同的语句中执行了两次写入。
再说一次,不同代码行的分离只是为程序提供了更大的可读性,因为main以这种方式定义完全有效:
int main () { std::cout << " Hello World! "; std::cout << " I'm a C++ program "; } |
源代码也可以分成更多的代码行:
1 int main () 2 { 3 std::cout << 4 "Hello World!"; 5 std::cout 6 << "I'm a C++ program"; 7 } |
Hello World! I'm a C++ program |
结果将再次与前面的示例完全相同。
预处理器指令(那些以 # 开头的指令)不属于这个一般规则,因为它们不是语句。
它们是在正确编译开始之前由预处理器读取和处理的行。
预处理器指令必须在它们自己的行中指定,并且因为它们不是语句,所以不以分号 ( ;)结尾。