Skip to content

🔢 02. 变量和数据类型

在C++中,变量是用来存储数据的“容器”。每个变量都有一个类型,这个类型决定了它能存储什么类型的数据。变量在内存中占据一定的空间,而我们将值存储到这些空间中。

1. 常见的变量类型🧱

C++ 提供了许多数据类型来满足不同的需求。以下是常见的几种:

  • 整型(int):用于存储整数,例如:10-51000

  • 长整型(long):用于存储比 int 更大的整数。例如,long 类型的数值范围通常比 int 更大。

  • 长长整型(long long):用于存储更大的整数。long long 可以存储比 long 类型更大的整数。

  • 无符号整型(unsigned):用于存储只有正数的整数,它不会存储负数。unsigned int 允许存储的最大值是 int 类型的两倍。

  • 浮点型(float):用于存储带小数的数值,例如:3.14-0.0012.71828

  • 双精度浮点型(double):用于存储更高精度的浮点数。与 float 相比,double 类型的数值精度和范围都更大。

  • 字符型(char):用于存储单个字符,例如:'a''B''9'

  • 布尔型(bool):只存放两个值:truefalse

    TIP

    true(真)和 false(假)我们会在后面结合新的知识学习他们。

NOTE

每种变量类型在计算机中都占据一定的内存空间,而计算机的内存是有限的。因此,每种数据类型有一个最大值最小值。例如,int 类型通常可以存储大约 -2,147,483,648 到 2,147,483,647 之间的整数,如果存储超出了这个范围,就会发生溢出,可能导致错误的结果。

2. 定义一个变量 📦

我们只需要使用 类型 + 变量 的形式来定义一个变量:

cpp
int a;

这样我们就定义了一个有符号的整型变量,其它同理。注意到,我们使用了一个空格来分开类型和变量名字,比如我们定义一个单精度浮点数的变量:

cpp
float b;

由于我们只是定义了一个变量,但是没有给它赋值,所以有时候可能会出现一些随机的值,当然有时候会被赋值为0。通常我们会在定义变量的时候,给它赋一个原始的值:

cpp
int a = 100;
float b = 3.1415;
bool c = true;

3. const 修饰符🌟

常量(Constant)是指在程序执行期间其值不会改变的量。在 C++ 中,常量的值一旦赋值之后就无法修改。常量用于保护数据不被意外修改,也指明了这个数值不需要,甚至不能够被改变。

定义一个常量,只需要在类型前输入 const即可:

cpp
const double pi = 3.1415926;

4. 变量的命名规则🧩

目前,我们已经学习了定义一个整型变量a,单精度浮点b,布尔值c。在实际的编程过程中,变量可以取任何合适的名字,但是应该遵守以下的规则:

规则是否允许说明
使用字母、数字、下划线✅ 允许例如:score1, player_name 是合法的变量名
以数字开头❌ 不允许1num 是非法的,变量名不能以数字起头
包含空格或标点❌ 不允许user namevalue! 都是非法命名
使用 C++ 关键字❌ 不允许不能用 int, return, if 等关键字作为名字

在实际的编程中,我们只需要记得使用字母来定义一个变量即可,如果变量要表达学生分数,为了让变量名更容易读懂,可以使用_来隔开两个单词:student_score。对于一些情况,你也可以在单词中间或后面加入数字。

5. 内存 💾

每个变量实际上是存储在计算机的内存中的。内存就像是计算机的存放数据的大仓库,每个变量都在其中占有一块区域。这些内存区域是有限的,因此合理利用内存非常重要。每当我们定义一个变量时,计算机会在内存中为其分配空间,存储该变量的值。

比如,当我们定义一个 int 类型的变量时,计算机会为它分配4字节的内存空间(这取决于系统的架构,通常是 4 字节)。当你给它赋值时,这个值会被存储到分配给它的内存地址中。

例如:

cpp
int a = 100;  // 这里的100被存储在a变量的内存地址中

以后当你修改了a的值,它就把这块内存存放的值修改为相应的值,如果你要读取a的值,它就找到这块内存,读取里面的值。

6. 示例程序 🧱

cpp
#include <iostream>
using namespace std;

int main() {
    int x = 10;           // 整型变量
    long y = 100000L;     // 长整型变量
    long long z = 10000000000LL;  // 长长整型变量
    unsigned int u = 200;  // 无符号整型变量
    double d = 3.14159;    // 双精度浮点型变量

    cout << "x = " << x << endl;
    cout << "y = " << y << endl;
    cout << "z = " << z << endl;
    cout << "u = " << u << endl;
    cout << "d = " << d << endl;

    return 0;
}

NOTE

在第7行中, long long z = 10000000000LL 定义了一个长长整数变量,表示需要存放一个很大的数,而数字后LL则告诉计算机,要把10000000000当成是长长整数来处理。这是因为C++ 中的整数常量默认是 int 类型,如果数字的范围超出了 int 能表示的范围,就需要用到更大的整数类型,比如 longlong long

  • long 类型的整数通常是至少 32 位的,但它的最大值可能不足以表示一些很大的数字。
  • long long 类型是 C++ 中标准的 64 位整数类型,可以表示比 long 更大的数字。它的范围通常是 -2^632^63 - 1

通过在常量后面加上 LL 后缀,编译器会将该常量视为 long long 类型,而不是默认的 int 类型。这样,数值就可以存储到 long long 类型的变量中,而不会发生溢出。其它后缀:

  • Uu:表示无符号整数(unsigned)。
  • Ll:表示 long 类型整数。
  • ULul:表示 unsigned long 类型整数。
  • ULLull:表示 unsigned long long 类型整数。

7. 本质小结 📚

  • 常见的变量类型,如 intlonglong longunsignedfloatdouble
  • 变量的值不是无限大的,每种类型都有它的最大和最小值,需要小心使用。
  • 变量存储在计算机的内存中。
  • const 来定义一个常量。
  • 推荐在定义变量时,直接为其赋初值。
  • 整数数值默认是int,浮点数数值默认是double,如果不是这些数字类型,需要在数字后面加上对应的后续,告知计算机。

8. 练习 📝

  1. 请编写一个程序,定义一个 int 类型的变量 age 并赋值为你当前的年龄,然后输出这个变量的值。
  2. 定义一个 double 类型的变量 pi,并赋值为 3.14159。然后输出 pi 的值,确保输出到小数点后两位。
  3. 定义一个常量 const double 类型的变量 PI,并赋值为 3.1415926。然后输出 PI 的值。
  4. 定义一个 unsigned int 类型的变量,并尝试给它赋值一个负数(例如:-10),然后输出这个变量的值。
  5. 定义一个 int 类型的变量,并赋值为一个非常大的值(例如:1000000000),然后输出这个值。再将该变量赋值为一个更大的值(例如:2147483647),并输出它。
  6. 定义一个 long 类型的变量,赋值为 1000000000,并输出该变量的值。再定义一个 long long 类型的变量,赋值为一个更大的数(例如:1000000000000),并输出该变量的值。
  7. 请编写一个程序,声明一个 float 类型的变量 height,并初始化为一个你喜欢的身高值(例如:1.75)。然后输出该变量的值。

💬 与我联系 QQ:774165314 | 微信:Yonas_Luo