摘要
程序把输入变换为输出,本课研究这一变换的两端,以及两端之间可能出错的地方。本课讲授:用 std::print 和 std::println 输出,借助占位符和格式说明来规定宽度、对齐和小数位数;用 std::cin 读取数;预见用户输入了与所要求不同的内容时会发生什么,在 C++ 这样的输入系统中,这不会产生警告,而是产生一个处于错误状态的流和一个值为零的变量;以及按照错误显现的时刻,把程序的错误分为四类:编译错误、链接错误、运行时错误和逻辑错误。最后讲解如何有条理地阅读编译器的消息。
学习目标
- 编写用
std::cin读取数据、用std::println输出结果的程序,并用格式说明控制宽度和小数位数。 - 预测一个多次调用
std::print和std::println的程序的确切输出,包括换行。 - 描述输入不符合预期形式(该是数的地方出现字母)时会发生什么,并检查读取的状态。
- 把一个错误归为编译错误、链接错误、运行时错误或逻辑错误,并根据它的表现找出它的位置。
程序及其边界
在从问题到算法一课中,每个问题都由输入什么、输出什么来规定。程序实现这一规格说明:接收数据,变换数据,交付结果。然而,数据并不产生于程序内部,而是来自程序之外:来自使用者的键盘、某个文件或另一个程序;结果也不留在程序内部,而是送往屏幕、文件或另一个程序。与外界的通信经由两个通道进行,操作系统在启动每个程序时都会为它打开这两个通道:标准输入,在终端中就是用键盘输入的内容;标准输出,就是终端显示的内容。C++ 把它们表示为流:按顺序、一个接一个地被消耗或产生的字符序列。
这两端并不对称。输出由程序决定,因此可以写得分毫不差:屏幕上出现的每个字符,都是程序命令写出的那个字符。输入则由别人决定:程序要一个数,但坐在键盘前的人可能输入一个词、一个用逗号作小数点的数、一个过大的数,或者什么也不输入。既然如此,输入就是一道不可信边界,每个读取数据的程序都必须预先想好:收到的东西不符合预期形式时该怎么办。本课先讲输出,再讲读取,然后讲读取失败时会发生什么,最后讲如何按照错误显现的时刻来辨认错误,这里指的是程序的错误,而不是用户的错误。
正在加载内容…
已完成
登录账户以保存您的进度