这是作者用于整理、归纳知识点的笔记。它虽然也能拿来看,但并不是本电子书的一部分。
笔记取自 C++ Primer 5th edition 中文版。
每个 C++ 程序都包含一个或多个函数(function),其中一个必须命名为 main。操作系统通过调用 main 来运行 C++ 程序。
一个函数的定义包含四部分:返回类型(return type)、函数名(function name)、一个括号包围的形参列表(parameter list,允许为空)以及函数体(function body)。虽然 main 函数在某种程度上比较特殊,但其定义与其他函数是一样的。
main 函数的返回类型必须为 int,即整数类型。int 类型是一种内置类型(built-in type),即语言自身定义的类型。
函数定义的最后一部分是函数体,它是一个以左**花括号(curly brace)**开始,以右花括号结束的语句块(block of statements):
{
return 0;
}
这个语句块中唯一的语句是 return,它结束函数的执行。如果需要,return 还会向调用者返回一个值。当 return 语句包括一个值时,此返回值的类型必须与函数的返回类型相容。
在大多数操作系统中,main 的返回值还被用来指示程序运行结束时的状态。返回值 0 表明程序运行成功,非 0 的返回值由使用的操作系统定义,通常用来指出错误类型。
编写好程序后,我们就需要编译它。如何编译程序依赖于你使用的操作系统和编译器。
很多 PC 机上的编译器都具备集成开发环境(Integrated Developed Environment, IDE),将编译器与其他程序的创建与分析工具封装在一起。在开发大型项目时,这类程序是非常有用的工具,但需要一些时间来学习如何高效地使用它们。
大部分编译器,包括集成 IDE 使用的编译器,都会提供一个命令行界面。
无论你使用命令行界面或 IDE,大多数编译器都要求程序源代码存储在一个或多个文件中。程序文件通常被称为源文件(source file),其中写好的程序被称为源代码(source code)。在大多数操作系统中,源文件的名字都有特定的后缀,后缀是由一个句点紧接着一个或多个字符组成的。后缀可以告诉操作系统,这个文件存储的内容是 C++ 程序。不同编译器可能使用不同的后缀命名约定,最常见的包括 .cc
、.cxx
、.cpp
、.cp
以及.C
。
C ++ 语言并未定义任何专用的输入输出(IO)语句,取而代之的是包含了一个全面的**标准库(standard library)**来提供 IO 设施。
iostream 库包含两个基础类型 istream 与 ostream,分别表示输入流与输出流。一个流就是一个字符序列,是从 IO 设备读出或写入 IO 设备的。术语“流”(stream)意图表达的是,随着时间的推移,字符是按照顺序生成或消耗的。
标准库顶一个 4 个 IO 对象。为了处理输入,我们使用一个名为 cin 的 istream 类型的对象。这个对象也被称为标准输入(standard input)。对于输出,我们使用一个名为 cout 的 ostream 类型的对象。此对象也被称为标准输出(standard output)。标准库还定义了其他两个 ostream 对象,分别名为 cerr 和 clog。我们通常用 cerr 来输出警告和错误信息,因此它也被称为标准错误(standard error)。而 clog 则是用来输出程序运行时的一般性日志信息用的。
#include <iostream>
int main() {
std::cout << "请输入两个数字:" << std:endl;
int x = 0, y = 0;
std::cin >> x >> y;
std::cout << "数字" << x
<< "与" << y
<< "的和为" << x + y
<< std::endl;
return 0;
}
第一行告诉编译器我们想要使用 iostream 库。尖括号中的名字(在这里是指 iostream
)指出了一个头文件(header)。每个使用标准库设施的程序都必须包含相关的头文件。#include
指令和头文件的名字必须写在同一行中,不能换行分开写,也不能粘在一起紧挨着写。通常,#include
指令必须出现在所有具体程序定义的函数之外。我们一般将一个程序的所有#include
指令都放在源文件的开头位置。
main 的函数体中第一句执行了一个表达式(expression)。在 C++ 中,一个表达式可以产生一个计算结果,它由一个或多个运算对象和(通常是)一个运算符组成。这条语句中的表达式使用了**输出运算符(<<)**在标准输出上打印消息:
std::cout << "请输入两个数字:" << std:endl;
<<
运算符接受两个运算对象:左侧的运算对象必须是一个 ostream 对象,右侧的运算对象就是您想打印的值。此运算符将给定的值写到给定的 ostream 对象中。输出运算符的计算结果就是其左侧的运算对象本身,因此我们还可以对着这次运算的结果再一次(乃至连续多次)使用这个运算符。