【Learncpp中文翻译版】【1.2 — 注释】

原文链接:1.2 — Comments

声明:

  • 本文旨在方便了解学习C++语法,切勿用于任何商业用途。
  • 由于本人英语水平有限,文章中可能存在语义错误,如有疑问请参照原文,也可以在评论区指出错误。

1.2 — 注释

注释是直接插入到程序源代码中的程序员可读注释。编译器会忽略注释,仅供程序员使用。

在 C++ 中有两种不同风格的注释,它们都有相同的目的:帮助程序员以某种方式记录代码。


单行注释

//符号开始一个 C++ 单行注释,它告诉编译器忽略从//符号到行尾的所有内容。例如:

std::cout << "Hello world!"; // Everything from here to the end of the line is ignored

通常,单行注释用于对单行代码进行快速注释。

std::cout << "Hello world!\n"; // std::cout lives in the iostream library
std::cout << "It is very nice to meet you!\n"; // these comments make the code hard to read
std::cout << "Yeah!\n"; // especially when lines are different lengths

将注释放在行的右侧会使代码和注释都难以阅读,尤其是在行很长的情况下。如果行很短,注释可以简单地对齐(通常到制表位),如下所示:

std::cout << "Hello world!\n";                 // std::cout lives in the iostream library
std::cout << "It is very nice to meet you!\n"; // this is much easier to read
std::cout << "Yeah!\n";                        // don't you think so?

但是,如果行很长,将注释放在右侧会使您的行变得很长。在这种情况下,单行注释通常放在它正在注释的行之上:

// std::cout lives in the iostream library
std::cout << "Hello world!\n";

// this is much easier to read
std::cout << "It is very nice to meet you!\n";

// don't you think so?
std::cout << "Yeah!\n";
作者注

上面的陈述代表了我们第一次遇到代码片段。因为片段不是完整的程序,它们不能自己编译。相反,它们的存在是为了以简洁的方式展示特定的概念。

如果你想编译一个片段,你需要把它变成一个完整的程序才能编译。通常,该程序将如下所示:

#include <iostream>

int main()
{
    // Replace this line with the snippet of code you'd like to compile

    return 0;
}

多行注释

和符号对表示 C 风格的多行注释/*。*/符号之间的所有内容都将被忽略。

/* This is a multi-line comment.
   This line will be ignored.
   So will this one. */

由于符号之间的所有内容都被忽略了,你有时会看到程序员“美化”他们的多行注释:

/* This is a multi-line comment.
 * the matching asterisks to the left
 * can make this easier to read
 */

多行样式注释不能嵌套。因此,以下将产生意想不到的结果:

/* This is a multi-line /* comment */ this is not inside the comment */
// The above comment ends at the first */, not the second */

当编译器试图编译它时,它将忽略从第一个/*到第一个 */ 的所有内容。由于“ this is not inside the comment */ ”不被认为是注释的一部分,编译器将尝试编译它。这将不可避免地导致编译错误。

这是使用语法荧光笔非常有用的一个地方,因为注释的不同颜色应该清楚地说明什么被认为是注释的一部分,而不是。

警告

不要在其他多行注释中使用多行注释。在多行注释中包含单行注释是可以的。

正确使用注释

通常,注释应该用于三件事。首先,对于给定的库、程序或函数,最好使用注释来描述库、程序或函数的功能。这些通常放置在文件或库的顶部,或紧接在函数之前。例如:

// This program calculates the student's final grade based on their test and homework scores.
// This function uses Newton's method to approximate the root of a given equation.
// The following lines generate a random item based on rarity, level, and a weight factor.

所有这些注释使读者无需查看实际代码即可很好地了解库、程序或函数试图完成的工作。用户(可能是其他人,或者如果您想重用以前编写的代码,则您)可以一眼看出代码是否与他或她想要完成的任务相关。当作为团队的一员工作时,这一点尤其重要,因为不是每个人都熟悉所有代码。

其次,在上述库、程序或函数中,注释可用于描述代码将如何实现其目标。

/* To calculate the final grade, we sum all the weighted midterm and homework scores
    and then divide by the number of scores to assign a percentage, which is
    used to calculate a letter grade. */
// To generate a random item, we're going to do the following:
// 1) Put all of the items of the desired rarity on a list
// 2) Calculate a probability for each item based on level and weight factor
// 3) Choose a random number
// 4) Figure out which item that random number corresponds to
// 5) Return the appropriate item

这些注释让用户了解代码将如何实现其目标,而无需了解每一行代码的作用。

第三,在语句级别,应该使用注释来描述代码为什么做某事。错误的语句注释解释了代码在做什么。如果您曾经编写过如此复杂的代码,需要注释来解释语句在做什么,那么您可能需要重写您的语句,而不是注释它。

下面是一些不好的行注释和好的语句注释的例子。

不好的注释:

// Set sight range to 0
sight = 0;

原因:我们已经可以通过查看语句看到视线被设置为 0

不好的注释:

// Calculate the cost of the items
cost = quantity * 2 * storePrice;

原因:我们可以看到这是一个成本计算,但是为什么数量要乘以2呢?

好注释:

// We need to multiply quantity by 2 here because they are bought in pairs
cost = quantity * 2 * storePrice;

原因:现在我们知道为什么这个公式有意义了。

程序员经常不得不在以一种方式解决问题或以另一种方式解决问题之间做出艰难的决定。评论是提醒自己(或告诉其他人)您做出一个决定而不是另一个决定的原因的好方法。

好注释:

// We decided to use a linked list instead of an array because
// arrays do insertion too slowly.

最后,注释应该以对不知道代码做什么的人有意义的方式编写。通常情况下,程序员会说“这很明显!我不可能忘记这件事”。你猜怎么着?这并不明显,你会惊讶于你忘记的速度有多快。😃 您(或其他人)稍后会感谢您用人类语言写下您的代码的内容、方式和原因。阅读单独的代码行很容易。不了解他们要完成的目标是什么。

作者注

在本教程系列的其余部分中,我们将在代码块中使用注释来引起您对特定事物的注意,或者帮助说明事物是如何工作的(同时确保程序仍然可以编译)。精明的读者会注意到,按照上述标准,这些z注释中的大多数都是可怕的。
:) 当您阅读其余教程时,请记住,这些注释是为了教育目的,而不是试图展示好的注释是什么样的。

注释掉代码

将一行或多行代码转换为注释称为注释掉您的代码。这提供了一种方便的方法来(暂时)将部分代码排除在已编译的程序中。

要注释掉一行代码,只需使用 // 样式的注释将一行代码暂时变成注释即可:
未注释掉:

std::cout << 1;

注释掉:

//    std::cout << 1;

要注释掉代码块,请在多行代码上使用 ///* */ 样式注释将代码块暂时变成注释。

未注释掉:

std::cout << 1;
std::cout << 2;
std::cout << 3;

注释掉:

//    std::cout << 1;
//    std::cout << 2;
//    std::cout << 3;

或者

/*
    std::cout << 1;
    std::cout << 2;
    std::cout << 3;
*/

您可能想要这样做的原因有很多:

  1. 您正在编写一段尚未编译的新代码,您需要运行该程序。如果存在编译器错误,编译器将不允许您编译代码。注释掉无法编译的代码将允许程序编译,以便您可以运行它。准备好后,您可以取消注释代码,然后继续处理它。
  2. 您编写了可以编译但无法正常工作的新代码,直到稍后您才有时间修复它。注释掉损坏的代码将确保损坏的代码不会执行并导致问题,直到您可以修复它。
  3. 找出错误的根源。如果程序没有产生预期的结果(或崩溃),有时禁用部分代码以查看是否可以隔离导致其无法正常工作的原因可能很有用。如果您注释掉一行或多行代码,并且您的程序开始按预期运行(或停止崩溃),那么您最后注释掉的内容很可能是问题的一部分。然后,您可以调查这些代码行导致问题的原因。
  4. 您想用另一段代码替换一段代码。除了删除原始代码之外,您还可以将其注释掉并留在那里以供参考,直到您确定新代码正常工作。一旦你确定你的新代码可以工作,你可以删除旧的注释掉的代码。如果您的新代码无法正常工作,您可以随时删除新代码并取消注释旧代码以恢复到之前的状态。

在开发过程中注释掉代码是一件很常见的事情,因此许多 IDE 都支持注释掉突出显示的代码部分。您访问此功能的方式因 IDE 而异。

Tip:

如果您总是对普通注释使用单行注释,那么您始终可以使用多行注释来注释您的代码而不会发生冲突。如果您使用多行注释来记录您的代码,那么使用注释注释掉代码会变得更具挑战性。

如果您确实需要注释掉包含多行注释的代码块,您还可以考虑使用#if 0预处理器指令,我们将在第 2.10 课 - 预处理器简介中讨论该指令。

概括

  • 在库、程序或函数级别,使用注释来描述.
  • 在库、程序或函数内部,使用注释来描述如何.
  • 在语句级别,使用注释来描述原因。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: LAS 1.2格式是一种用于存储和交换测井数据的国际标准。它定义了一种通用的格式,可用于存储测井数据的各个方面,例如孔隙度、密度、构造等。 LAS 1.2格式中文版提供了中文字符的支持,使得可以在测井数据文件中使用中文注释和描述。这样,就可以更好地理解和解释测井数据,方便油田工程师和地质学家进行数据分析和解读。 在LAS 1.2格式中文版中,每个测井曲线都可以使用中文名称进行描述,而不仅仅是英文缩写。这样,在数据解读过程中,不需要记忆每个曲线的英文缩写,而是直接使用具有描述性的中文名称。 此外,在LAS 1.2格式中文版中,注释项和测量单位也都可以使用中文表示。这对于一些只熟悉中文的工程师和地质学家来说,非常方便。 总的来说,LAS 1.2格式中文版通过引入中文字符的支持,使得测井数据的存储和交换更具可读性和易用性。这种格式的应用可以提高数据的理解和分析的效率,为石油工程师和地质学家的工作提供更好的支持。 ### 回答2: LAS 1.2格式是一种用于记录测井数据的文件格式。LAS代表颁布了这一标准的美国石油学会(SPE)测井委员会,它的全称是Log ASCII Standard,意思是用ASCII码表示记录的测井数据。 LAS 1.2格式定义了用于记录测井数据的不同信息和字段,包括曲线数据、单位、曲线描述、测量深度等等。它允许将这些信息以文本格式进行编码,使测量人员和数据分析人员可以方便地交流和共享测井数据。 在LAS 1.2格式中,曲线数据以行的形式进行存储。每一行代表一个深度点,包括测量深度和对应的曲线值。此外,还可以添加其他的信息,如单位、曲线描述、曲线名等。这些信息以头部(header)的形式存储在文件的开头,用于描述整个文件的属性和结构。 LAS 1.2格式中的曲线数据可以包括多种类型的测井曲线,如自然伽玛射线、密度、声波测井等。每个曲线都有一个独特的标识符和单位,用于标识不同的物理性质和测量结果。 对于中文版的LAS 1.2格式,除了兼容英文本外,还应该考虑中文字符的编码和处理。对于中文标识符和描述,应该使用适当的字符编码方式进行存储和解码,以确保数据的完整性和准确性。 总之,LAS 1.2格式定义了用于记录测井数据的标准格式,包括曲线数据、单位、曲线描述等信息。中文版的LAS 1.2格式应该考虑中文字符的编码和处理,以适应中文用户的需求。 ### 回答3: LAS1.2是一种常用的地球物理数据文件格式,被广泛应用于地球科学研究和勘探工作中。它是由美国石油学会(Society of Petroleum Engineers,SPE)制定的,用于存储测井数据和相关信息。 LAS1.2格式定义中包含了多个部分,每个部分都具有特定的功能。其中,最重要的几个部分包括: 1. 文件头部(Header Section):它包含了文件的基本信息,如文件本、创建者、单位定义等。文件头部还可以包含曲线的定义信息,包括曲线名称、单位、数据类型等。 2. 曲线数据部分(Data Section):它包含了实际的测量数据,按照曲线定义的顺序排列。曲线数据可以是各种类型的数据,如测井曲线数据、岩心数据等。 3. 其他部分:除了文件头部和曲线数据部分,LAS1.2格式还定义了其他一些可选的部分,用于存储附加信息,如井位信息、测量条件、与曲线相关的元数据等。 使用LAS1.2格式的主要好处是它的通用性和互操作性。由于该格式被广泛接受和应用,因此可以方便地与不同厂商的软件和设备进行数据交换和共享。此外,LAS1.2格式还提供了一些标准化的数据处理和解析方法,使得地球科学家和工程师可以更轻松地处理和分析数据。 总结起来,LAS1.2格式定义中文版包含文件头部、曲线数据部分和其他可选部分,它是一种通用的地球物理数据文件格式,广泛应用于地球科学和勘探工作中,具有方便的数据交换和处理特性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值