Appearance
🔢 02. 变量和数据类型
在C++中,变量是用来存储数据的“容器”。每个变量都有一个类型,这个类型决定了它能存储什么类型的数据。变量在内存中占据一定的空间,而我们将值存储到这些空间中。
1. 常见的变量类型🧱
C++ 提供了许多数据类型来满足不同的需求。以下是常见的几种:
整型(int):用于存储整数,例如:
10,-5,1000。长整型(long):用于存储比
int更大的整数。例如,long类型的数值范围通常比int更大。长长整型(long long):用于存储更大的整数。
long long可以存储比long类型更大的整数。无符号整型(unsigned):用于存储只有正数的整数,它不会存储负数。
unsigned int允许存储的最大值是int类型的两倍。浮点型(float):用于存储带小数的数值,例如:
3.14,-0.001,2.71828。双精度浮点型(double):用于存储更高精度的浮点数。与
float相比,double类型的数值精度和范围都更大。字符型(char):用于存储单个字符,例如:
'a','B','9'。布尔型(bool):只存放两个值:
true或falseTIP
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 name 或 value! 都是非法命名 |
| 使用 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 能表示的范围,就需要用到更大的整数类型,比如 long 或 long long。
long类型的整数通常是至少 32 位的,但它的最大值可能不足以表示一些很大的数字。long long类型是 C++ 中标准的 64 位整数类型,可以表示比long更大的数字。它的范围通常是-2^63到2^63 - 1。
通过在常量后面加上 LL 后缀,编译器会将该常量视为 long long 类型,而不是默认的 int 类型。这样,数值就可以存储到 long long 类型的变量中,而不会发生溢出。其它后缀:
U或u:表示无符号整数(unsigned)。L或l:表示long类型整数。UL或ul:表示unsigned long类型整数。ULL或ull:表示unsigned long long类型整数。
7. 本质小结 📚
- 常见的变量类型,如
int,long,long long,unsigned,float和double。 - 变量的值不是无限大的,每种类型都有它的最大和最小值,需要小心使用。
- 变量存储在计算机的内存中。
- 用
const来定义一个常量。 - 推荐在定义变量时,直接为其赋初值。
- 整数数值默认是
int,浮点数数值默认是double,如果不是这些数字类型,需要在数字后面加上对应的后续,告知计算机。
8. 练习 📝
- 请编写一个程序,定义一个
int类型的变量age并赋值为你当前的年龄,然后输出这个变量的值。 - 定义一个
double类型的变量pi,并赋值为 3.14159。然后输出pi的值,确保输出到小数点后两位。 - 定义一个常量
const double类型的变量PI,并赋值为 3.1415926。然后输出PI的值。 - 定义一个
unsigned int类型的变量,并尝试给它赋值一个负数(例如:-10),然后输出这个变量的值。 - 定义一个
int类型的变量,并赋值为一个非常大的值(例如:1000000000),然后输出这个值。再将该变量赋值为一个更大的值(例如:2147483647),并输出它。 - 定义一个
long类型的变量,赋值为 1000000000,并输出该变量的值。再定义一个long long类型的变量,赋值为一个更大的数(例如:1000000000000),并输出该变量的值。 - 请编写一个程序,声明一个
float类型的变量height,并初始化为一个你喜欢的身高值(例如:1.75)。然后输出该变量的值。