InfoCode

C++ · 变量与数据类型

常量、变量定义与赋值

区分 C++ 变量初始化与赋值,用逐行值表理解复制与覆盖,选择合适类型,再通过预测、解释和换例自测。

InfoCode 编写 · 技术参考见下文

在应用中练这个知识点 在应用中阅读讲解

变量、类型与赋值

变量像贴了名字的盒子:int score = 80; 创建整数变量 score,并给它初值 80。

声明告诉编译器变量的类型和名字;初始化给新变量第一次设值;后续 score = 90; 是赋值。score = score + 5; 先用旧值计算,再把结果保存回去,不是数学等式。

赋值通常复制当前值。int b = a; 后再改变 a,b 不会跟着变化。需要交换时应先用临时变量保留将被覆盖的值。固定不变的量可以声明为 const int DAYS = 7;,之后不能再赋值。

先看类型,再追踪每次赋值

int 常用来保存整数,double 保存浮点近似值,char 表示一个字符,bool 表示真或假。类型不仅决定能存什么,也影响表达式怎样计算。整数范围由实现决定;double 也不能精确表示所有小数。

初始化给新变量第一次设值,赋值改变已有变量。先独立预测下面的 a、b,再按语句顺序检查:

执行后ab
int a = 4;4尚未声明
int b = a;44
a = a + 3;74

b 复制的是当时的值,不是与 a 持续联动。a = a + 3 先读取旧值4,算出7,再覆盖a。普通局部变量必须先初始化再读取。

运行验证:复制当前值

#include <iostream>
int main() {
    int a = 4;
    int b = a;
    a = a + 3;
    std::cout << a << " " << b << "\n";
}

输出7 4。改变a没有给b重新赋值。

先自己判断,再展开答案

接着执行 b = a; a = 1;,a、b分别是多少?

a是1,b是7。b复制的是第二次赋值时a的值。

a = 3; b = 8; a = b; b = a; 能交换吗?

不能,最后都是8。第一次赋值已覆盖原来的3,需要先用临时变量保存旧值。

要保存一本书的页数和是否读完,分别可用什么类型?

页数可用能容纳该范围的int,是否读完用bool。类型根据数据含义和范围选择。

赋值与交换示例

例1:逐行追踪赋值

#include <iostream>
using namespace std;
int main() {
    int a = 6;
    int b = a;
    a = a + 4;
    cout << a << " " << b << endl;
}

输出 10 6。b 保存的是初始化时的 6,不是 a 的别名。

例2:交换前先保存旧值

#include <iostream>
using namespace std;
int main() {
    int a = 3, b = 8;
    int oldA = a;
    a = b;
    b = oldA;
    cout << a << " " << b << endl;
}

输出 8 3。若直接 a=b; b=a;,两个变量都会变成 8,原来的 3 已被覆盖。

提示

技术参考

范围说明

本站讲解由 InfoCode 编写,不是官方考纲;参考级别是本站映射,不代表官方等级、认证或参赛资格。练习记录不等于掌握或资格。

参考级别:GESP 1 级(本站映射)

查看赛事关系与路径