C++tutorial(二)

程序的结构
学习编程语言的最好方法是编写程序。通常,初学者编写的第一个程序是一个名为“Hello World”的程序,它只是将“Hello World”打印到您的计算机屏幕上。虽然它非常简单,但它包含了C ++程序的所有基本组件:

// my first program in C++
#include <iostream>

int main()
{
  std::cout << "Hello World!";
}

你好,世界!
编辑并运行

上面的左侧面板显示了该程序的C ++代码。右侧面板显示计算机执行程序时的结果。面板左侧的灰色数字是行号,以便更容易地讨论程序和研究错误。他们不是该计划的一部分。

让我们逐行检查这个程序:

第1行: // my first program in C++
两个斜杠符号表示该行的其余部分是程序员插入的注释,但对程序的行为没有影响。程序员使用它们包括有关代码或程序的简短说明或观察。在这种情况下,它是对该程序的简要介绍性描述。

第2行: #include
以井号(#)开头的行是由所谓的预处理器读取和解释的指令。它们是在程序编译开始之前解释的特殊行。在这种情况下,指令#include 指示预处理器包含一部分标准C ++代码,称为头iostream,允许执行标准输入和输出操作,例如编写此程序的输出(你好,世界)到屏幕。

第3行:一个空行。
空行对程序没有影响。它们只是提高了代码的可读性。

第4行: int main ()
该行启动函数声明。本质上,函数是一组给出名称的代码语句:在这种情况下,这给后面的代码语句组赋予名称“main”。函数将在后面的章节中详细讨论,但实质上,它们的定义是通过一系列type(int),一个name(main)和一对括号(())(可选地包括参数)引入的。

命名main函数是所有C ++程序中的特殊函数; 它是程序运行时调用的函数。main无论函数在代码中的实际位置如何,所有C ++程序的执行都从函数开始。

第5和第7行:{和}
第{5行的open brace()表示main函数定义的开头,第}7行的closing brace()表示结束。这些大括号之间的所有东西都是函数的主体,它定义了main调用时发生的事情。所有函数都使用大括号来指示其定义的开头和结尾。

第6行: std::cout << “Hello World!”;
这一行是一个C ++语句。语句是一个实际上可以产生一些效果的表达式。它是程序的核心,指定它的实际行为。语句的执行顺序与它们在函数体内出现的顺序相同。

这个陈述有三个部分:第一部分std::cout,它标识了st andar d c haracter out put device(通常,这是计算机屏幕)。第二,插入operator(<<),表示插入后面的内容std::cout。最后,引号内的句子(“Hello world!”)是插入标准输出的内容。

请注意,语句以分号结尾(;)。这个字符标志着声明的结束,正如句号以英语结束句子一样。所有C ++语句必须以分号结尾。C ++中最常见的语法错误之一是忘记用分号结束语句。

您可能已经注意到,在执行代码时,并非该程序的所有行都执行操作。有一行包含注释(以…开头//)。有一条带有预处理器指令的行(以…开头#)。有一行定义了一个函数(在本例中是main函数)。最后,一行带有以分号结尾的语句(插入到cout),该行位于由函数的大括号({ })分隔的块内main。

该程序采用不同的方式构造,并适当缩进,以便更容易理解阅读它的人。但是C ++没有关于缩进或如何在不同行中拆分指令的严格规则。例如,而不是

int main ()
{
std::cout << " Hello World!";
}
编辑并运行

我们本来可以写的:

int main () { std::cout << “Hello World!”; }
编辑并运行

所有这些都在一行中,这与前面的代码具有完全相同的含义。

在C ++中,语句之间的分隔是用一个结尾的分号(;)来指定的,为了这个目的,将它们分成不同的行并不重要。许多语句可以写在一行中,或者每个语句可以在它自己的行中。不同行中的代码划分只是为了使人们可以阅读它更易读和原理图,但对程序的实际行为没有影响。

现在,让我们在第一个程序中添加一个额外的声明:

// my second program in C++
#include <iostream>

int main ()
{
  std::cout << "Hello World! ";
  std::cout << "I'm a C++ program";
}
你好

,世界!我是一个C ++程序
编辑并运行

在这种情况下,程序std::cout在两个不同的语句中执行了两次插入。再一次,不同代码行中的分离只是为程序提供了更大的可读性,因为main可以通过这种方式完全有效地定义:

int main () { std::cout << " Hello World! "; std::cout << " I’m a C++ program "; }
编辑并运行

源代码也可以分为更多代码行:

int main ()
{
  std::cout <<
    "Hello World!";
  std::cout
    << "I'm a C++ program";
}

编辑并运行

结果将再次与前面的例子完全相同。

预处理程序指令(以那些开头的指令#)超出了这个一般规则,因为它们不是语句。它们是在正确编译开始之前由预处理器读取和处理的行。预处理程序指令必须在它们自己的行中指定,因为它们不是语句,所以不必以分号(;)结尾。

评论
如上所述,评论不影响计划的运作; 但是,它们提供了一个重要的工具,可以直接在源代码中记录程序的功能和运行方式。

C ++支持两种注释代码的方式:

// line comment
/* block comment */ 

其中第一个,称为行注释,丢弃从找到斜线符号(//)到同一行末尾的所有内容。第二个,称为块注释,丢弃/字符和字符的第一个外观之间的所有内容/,可能包含多行。

让我们为第二个程序添加注释:

/* my second program in C++
   with more comments */

#include <iostream>

int main ()
{
  std::cout << "Hello World! ";     // prints Hello World!
  std::cout << "I'm a C++ program"; // prints I'm a C++ program
}

你好,世界!我是一个C ++程序
编辑并运行

如果在不使用注释字符组合的情况下将注释包含在程序的源代码中//,/或者/编译器将它们视为C ++表达式,则很可能导致编译失败并显示一条或多条错误消息。

使用命名空间std
如果你之前看过C ++代码,你可能已经看到过cout被用来代替std::cout。两者都命名相同的对象:第一个使用其非限定名称(cout),而第二个直接在命名空间 std(as std::cout)中限定它。

cout是标准库的一部分,标准C ++库中的所有元素都在所谓的命名空间中声明:命名空间std。

为了参考元素的std命名空间的程序应由有资格的每一个使用该库的元素(如,我们通过做前缀cout与std::),或引入其组件的可见性。引入这些组件可见性的最典型方法是使用声明:

using namespace std;

上述声明允许std以不合格的方式访问命名空间中的所有元素(没有std::前缀)。

考虑到这一点,可以重写最后一个示例以使得coutas的不合格用途:

// my second program in C++
#include <iostream>
using namespace std;

int main ()
{
  cout << "Hello World! ";
  cout << "I'm a C++ program";
}

你好,世界!我是一个C ++程序
编辑并运行

访问std命名空间元素的两种方式(显式限定和使用声明)在C ++中都是有效的,并产生完全相同的行为。为简单起见并提高可读性,这些教程中的示例将更多地使用后一种方法来使用声明,但请注意,显式限定是保证名称冲突永远不会发生的唯一方法。

命名空间将在后面的章节中详细介绍

翻译自:
http://www.cplusplus.com/doc/tutorial/program_structure/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值