P3 注释
注释 ( comments )可以帮助人类读者理解程序。注释通常用于概述算法,确定变量的用途,或者解释晦涩难懂的代码段。编译器会忽略注释,因此注释对程序的行为或性能不会有任何影响。C++中有2种注释:一种为单行注释,另一种为界定符对注释(多行注释)。
1. 单行注释
单行注释多用于对单个语句的注释,用法://单行注释,示例如下图所示(灰色代码):
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World" << endl;// 此行代码的意义是能够输出HelloWorld
system("pause");
return 0;
}
代码分解如下:
#include <iostream>
Primer C++第五版第1.2节:
开头告诉编译器我们想要使用iostream库,尖括号中的名字(本例中实isotream)指出了一个头文件(header),每个使用标准库设施的程序都必须包含相关的头文件。#include指令和头文件的名字必须卸载同一行中。通常情况下,#include指令必须出现在所有函数之外,我们一般将一个程序的#include 指令都放在源文件的开头位置。
iostream 库包含2个基础类型 istream 和 ostream,分别表示输入流和输出流。
标准库定义了4个输入输出(IO)对象,为了处理输入,使用一个名为 cin(发音为see-in)的 istream 类型的对象。这个对象也被称为标准输入(standard input)。对于输出,我们使用一个名为 cout(发音为see-out)的 ostream 类型的对象。此对象也被称之为标准输出(standard output)。标准库还定义了其他两个 ostream 对象,名为 cerr 和 clog (发音分别为 see-err 和 see-log)。我们通常用 cerr 来输出警告和错误消息,因此它也被称之为标准错误(standard error)。而clog 用来输出程序运行时的一般性信息。
using namespace std;
如果此处没有这个语句,则后面的cout和endl需要加上前缀,变成std:: cout 和 std:: endl。
前缀std::指出名字cout 和 endl 是定义在名为 std 的命名空间中的。命名空间可以帮助我们避免不经意的名字定义冲突,以及使用库中相同名字导致的冲突,标准库定义的所有名字都在命名空间 std 中。
int main()
{
cout << "Hello World" << endl;// 此行代码的意义是能够输出HelloWorld
system("pause");
return 0;
}
一个函数的定义包括四部分:返回类型(return type)、函数名(function name)、一对括号包围的形参列表(parameter list,允许为空)以及函数体(function body)。在本例中,main 的形参列表是空的(()中什么都没有),main函数的返回类型必须为int,即整数类型。int 类型是一种内置类型(built-in type),即语言自身定义的类型。函数定义的最后一部分是函数体,它是一个以左花括号(curly brace)开始,以右花括号结束的语句块(block of statements)。
cout << "HelloWorld" << endl;
main的函数体的第一条语句执行了一个表达式(expression)。在C++中,一个表达式产生一个计算结果,它由一个或者多个运算对象和(通常是)一个运算符组成。这条语句的表达式中使用了输出运算符(<<)在标准输出上打印消息。
此处 << 运算符接受2个运算对象。
左侧的运算对象必须是一个ostream对象,cout(发音为see-out)是ostream类型的对象,此对象也被称之为标准输出。
右侧的运算对象是要打印的值。
此运算符将给定的值写到给定的ostream对象中。输出运算符的计算结果就是其左侧运算对象。即,计算结果就是我们写入给定值的那个ostream对象。
在使用完第一个运算符后,第一个运算符的结果成为了第二个运算符的左侧运算对象。这样我们就可以将输出请求连接起来,因此我们的表达式等价于:
(cout << "Hello World" )<< endl;
链中每个运算符的左侧运算对象都是相同的,在本例是cout。我们也可以用两条语句生成相同的输出:
cout << "Hello World";
cout << endl;
第一个输出运算符给用户打印一条消息。这个消息是一个字符串字面值常量(string literal),是用一对双引号包围的字符序列,在双引号之间的文本被打印到标准输出。
第二个输出运算符打印endl,这是一个被称作操纵符(manipulator)的特殊值。写入endl的效果是结束当前行,并将与设备关联的缓冲区(buffer)中的内容刷到设备中。
2. 界定符对注释(多行注释)
界定符对通常用于多行解释,多行注释多用于对一段代码的解释,常见于开头部分。用法:/*多行注释 */,示例如下图所示(灰色代码):
#include <iostream>
using namespace std;
/*
多行注释
main函数是程序的一个入口
每个程序有且只有一个main函数
*/
int main()
{
cout << "HelloWorld" << endl;// 此行代码的意义是能够输出HelloWorld
system("pause");
return 0;
}
注意:一个注释不能嵌套在另一个注释之内,例如,在VS系统中编译下面的程序,就会产生错误。
关于main函数的问题,理论上是一个程序只有1个main函数,当在源文件下创建新建项时,输入main函数,再次运行时,系统会报错,有2个方法可以解决:
- 因此可以把不运行的项,点击右键,属性,点击从生成中排除,点击是。
- 把不运行的项用main1,main2代替,要运行的用main。