1.x 第一章 概要与测验
章节回顾
语句statement是一种指令,能促使程序执行特定操作。语句通常以分号结束。
函数function是由按顺序执行的语句组成的集合。每个C++程序都必须包含一个名为main的特殊函数。运行程序时,执行从main函数顶部开始。
在编程中,函数(或对象、类型、模板等)的名称称为其标识符identifier。
规范C++语言元素构造规则的体系称为语法syntax。违反语言语法规则时将引发语法错误syntax error。
注释Comments允许程序员在代码中添加备注。C++支持两种注释形式:行注释以//开头并延续至行尾;块注释以/开头并延续至对应的/符号。请勿嵌套块注释。
可通过注释临时禁用代码行或代码段,此操作称为注释掉代码。
数据Data是指计算机可移动、处理或存储的任何信息。单个数据称为值value。常见值包括字母(如a)、数字(如5)和文本(如Hello)。
变量是用于存储值的命名内存单元。创建变量需使用定义语句definition statement。程序运行时,每个定义的变量都会被实例化instantiated,即分配内存地址。
数据类型data type告知编译器如何将数据片段解析为有意义的值。整数integer是指可不带小数部分书写的数字,例如4、27、0、-2或-12。
复制赋值Copy assignment(通过赋值运算符)可用于为已创建的变量赋值。
为对象指定初始值的过程称为初始化initialization,用于初始化对象的语法称为初始化器initializer。
简而言之,C++支持6种基本初始化类型:
| Initialization Type | Example | Note |
|---|---|---|
| Default-initialization | int x; | In most cases, leaves variable with indeterminate value |
| Copy-initialization | int x = 5; | |
| Direct-initialization | int x ( 5 ); | |
| Direct-list-initialization | int x { 5 }; | Narrowing conversions disallowed |
| Copy-list-initialization | int x = { 5 }; | Narrowing conversions disallowed |
| Value-initialization | int x {}; | Usually performs zero-initialization |
直接初始化Direct-initialization有时称为括号初始化parenthesis-initialization,而列表初始化list-initialization(包括值初始化value-initialization)有时称为统一初始化uniform -initialization或花括号初始化brace-initialization。应优先使用花括号初始化brace-initialization而非其他初始化形式,并优先使用初始化而非赋值。
虽然可在单条语句中定义多个变量,但建议将每个变量单独定义并初始化于独立语句中。
std::cout 和 operator<< 可将表达式结果输出至控制台。
std::endl 输出换行符,强制控制台光标移至下一行,并清空控制台待输出内容。'\n' 同样输出换行符,但由系统决定何时刷新输出。请注意不要使用 ‘/n’(正斜杠)。
std::cin 和 operator>> 允许我们从键盘获取值。
未赋值的变量称为未初始化变量uninitialized variable。尝试获取未初始化变量的值将导致未定义行为undefined behavior,其表现形式多种多样。
C++保留了一组称为关键字keywords的名称。这些名称在语言中具有特殊含义,不可用作变量名。
字面量常量literal constant是直接嵌入源代码的固定值,例如5和“Hello world!”。
运算operation是一种涉及零个或多个输入值(称为操作数operands)的过程。具体执行操作由对应运算符operator决定,运算结果产生输出值。
一元Unary运算符取一个操作数。二元Binary运算符取两个操作数(常称左操作数和右操作数)。三元Ternary运算符取三个操作数。零元Nullary运算符不取操作数。
表达式expression是由字面量、变量、运算符和函数调用组成的序列,经过求值后产生单一输出值。该输出值的计算过程称为求值evaluation。最终生成的值即为表达式的结果result。
表达式语句是指在表达式末尾添加分号后转化为语句的表达式。
编写程序expression statement时,应分段添加代码或函数,逐段编译并修复错误,确保功能正常运行。切勿等到程序全部写完才进行首次编译!
专注于让代码运行起来。当确认保留某段代码后,再投入精力移除(或注释掉)临时/调试代码,添加注释,处理错误情况,规范代码格式,确保遵循最佳实践,消除冗余逻辑等。
初稿程序往往杂乱且不完美。绝大多数代码都需要经过清理和精炼才能变得出色!
测验时间
问题 #1
初始化与赋值有何区别?变量最多可被初始化或赋值多少次?
显示解答
初始化是在变量创建时为其赋予初始值。赋值则是在变量已定义后为其赋予新值。
由于变量仅创建一次,因此只能初始化一次。变量可以被赋值任意多次。
问题 #2
何时会发生未定义行为?未定义行为会导致什么后果?
显示解答
当程序员执行C++语言未明确规定的行为时,就会发生未定义行为。其后果可能千差万别,从程序崩溃、输出错误结果到照常运行皆有可能。
问题 #3
编写程序:用户依次输入两个数字,程序需输出两数相加与相减的结果。
程序输出应与以下示例一致(假设输入为 6 和 4):
Enter an integer: 6
Enter another integer: 4
6 + 4 is 10.
6 - 4 is 2.
提示:要打印一个句号和换行符,请使用“.\n”,而不是'.\n'。

显示解决方案
#include <iostream>
int main()
{
std::cout << "Enter an integer: ";
int x{};
std::cin >> x;
std::cout << "Enter another integer: ";
int y{};
std::cin >> y;
std::cout << x << " + " << y << " is " << x + y << ".\n";
std::cout << x << " - " << y << " is " << x - y << ".\n";
return 0;
}

浙公网安备 33010602011771号