章节回顾
语句是一种指令,它使程序执行某些操作。语句通常以分号结尾。
函数是按顺序执行的语句集合。每个 C++ 程序都必须包含一个名为 main 的特殊函数。当你运行程序时,执行从 main 函数的顶部开始。
在编程中,函数(或对象、类型、模板等)的名称称为其标识符。
管理 C++ 语言元素如何构造的规则称为语法。当你违反语言的语法规则时,就会发生语法错误。
注释允许程序员在代码中留下笔记。C++ 支持两种类型的注释。行注释以 //
开头并运行到行尾。块注释以 /*
开头并持续到配对的 */
符号。不要嵌套块注释。
你可以使用注释来暂时禁用代码行或代码段。这称为注释掉你的代码。
数据是计算机可以移动、处理或存储的任何信息。一个单一的数据称为一个值。值的常见示例包括字母(例如 a
)、数字(例如 5
)和文本(例如 Hello
)。
变量是我们可以用来存储值的命名内存块。为了创建变量,我们使用一个称为定义语句的语句。当程序运行时,每个定义的变量都会被实例化,这意味着它被分配了一个内存地址。
数据类型告诉编译器如何将一段数据解释成有意义的值。整数是可以不带小数部分写入的数字,例如 4、27、0、-2 或 -12。
复制赋值(通过 operator=)可用于为已创建的变量赋值。
为对象指定初始值的过程称为初始化,用于初始化对象的语法称为初始化器。
简化后,C++ 支持 6 种基本初始化类型
初始化类型 | 示例 | 注意 |
---|---|---|
默认初始化 | int x; | 在大多数情况下,变量值不确定 |
复制初始化 | int x = 5; | |
直接初始化 | int x ( 5 ); | |
直接列表初始化 | int x { 5 }; | 不允许窄化转换 |
复制列表初始化 | int x = { 5 }; | 不允许窄化转换 |
值初始化 | int x {}; | 通常执行零初始化 |
直接初始化有时称为括号初始化,列表初始化(包括值初始化)有时称为统一初始化或花括号初始化。你应该优先使用花括号初始化而不是其他初始化形式,并优先使用初始化而不是赋值。
尽管你可以在一个语句中定义多个变量,但最好在单独的语句中,在自己的行上定义和初始化每个变量。
std::cout 和 operator<<
允许我们将表达式的结果输出到控制台。
std::endl 输出一个换行符,强制控制台光标移动到下一行,并将任何待处理的输出刷新到控制台。'\n'
字符也输出一个换行符,但让系统决定何时刷新输出。注意不要使用 '/n'
(正斜杠)。
std::cin 和 operator>>
允许我们从键盘获取值。
未赋值的变量称为未初始化变量。尝试获取未初始化变量的值将导致未定义行为,这可能以多种方式表现出来。
C++ 保留了一组名称,称为关键字。这些在语言中具有特殊含义,不能用作变量名。
字面常量是直接插入到源代码中的固定值。例如 5 和 “Hello world!”。
操作是一个涉及零个或多个输入值(称为操作数)的过程。要执行的特定操作由提供的运算符表示。操作的结果产生一个输出值。
一元运算符接受一个操作数。二元运算符接受两个操作数,通常称为左操作数和右操作数。三元运算符接受三个操作数。零元运算符接受零个操作数。
表达式是字面量、变量、运算符和函数调用的序列,它们被求值以产生单个输出值。这个输出值的计算称为求值。产生的值是表达式的结果。
表达式语句是通过在表达式末尾放置分号而转换为语句的表达式。
编写程序时,添加几行或一个函数,编译,解决任何错误,并确保它能正常工作。不要等到编写完整个程序才第一次编译!
专注于让你的代码正常工作。一旦你确定要保留某些代码,那么你就可以花时间删除(或注释掉)临时/调试代码,添加注释,处理错误情况,格式化你的代码,确保遵循最佳实践,删除冗余逻辑等等……
初稿程序通常是混乱和不完美的。大多数代码需要清理和完善才能变得出色!
小测验时间
问题 #1
初始化和赋值有什么区别?变量可以初始化或赋值多少次?
问题 #2
未定义行为何时发生?未定义行为的后果是什么?
问题 #3
编写一个程序,要求用户输入一个数字,然后输入第二个数字。程序应告知用户这两个数字相加和相减的结果。
程序的输出应与以下内容匹配(假设输入为 6 和 4)
Enter an integer: 6 Enter another integer: 4 6 + 4 is 10. 6 - 4 is 2.
提示:要打印句点和换行符,请使用 ".\n"
,而不是 '.\n'
。