第2章 - 变量和数据类型
嗨,朋友!我是长安。
上一章我们写出了第一个程序,能在屏幕上显示文字了。但你有没有发现一个问题?我们的程序只能显示写死的内容,不够灵活。
这一章,我要教你一个超级重要的概念——变量。有了它,你的程序就能"记住"数据,变得更加智能!
🤔 什么是变量?
生活中的例子
想象一下,你的书桌上有很多盒子:
- 铅笔盒 - 专门装笔
- 饼干盒 - 专门装零食
- 钱包 - 专门装钱
每个盒子都有:
- 名字(铅笔盒、饼干盒、钱包)
- 类型(装什么东西)
- 内容(盒子里具体放了什么)
编程中的变量就像这些盒子:
- 变量名 - 盒子的名字
- 数据类型 - 盒子能装什么类型的东西
- 变量值 - 盒子里具体的内容
编程中的变量
int age = 18; // 创建一个叫 age 的盒子,装整数,里面放了 18
string name = "张三"; // 创建一个叫 name 的盒子,装文字,里面放了"张三"
double score = 95.5; // 创建一个叫 score 的盒子,装小数,里面放了 95.5
📦 C++ 的基本数据类型
C++ 有很多种"盒子"(数据类型),每种盒子装不同的东西。
1. 整数类型 (int)
用来存储整数,没有小数点的数字。
int age = 18; // 年龄
int students = 50; // 学生人数
int temperature = -5; // 温度(可以是负数)
取值范围:大约 -21亿 到 +21亿
2. 小数类型 (double)
用来存储小数。
double price = 19.99; // 价格
double height = 1.75; // 身高(米)
double pi = 3.14159; // 圆周率
为什么叫 double?
还有一个类型叫 float,也能存小数,但精度较低。double 的精度是 float 的两倍,所以叫"double"(双倍)。初学阶段,小数统一用 double。
3. 字符类型 (char)
用来存储单个字符(必须用单引号)。
char grade = 'A'; // 等级
char gender = 'M'; // 性别
char symbol = '@'; // 符号
注意:
- 单引号
'A'- 字符 - 双引号
"A"- 字符串(下面会讲)
4. 字符串类型 (string)
用来存储一串文字(必须用双引号)。
string name = "张三";
string message = "Hello World";
string email = "zhangsan@example.com";
注意
使用 string 需要引入头文件:
#include <string>
5. 布尔类型 (bool)
用来存储真或假,只有两个值:true(真)或 false(假)。
bool isStudent = true; // 是学生吗?是
bool isRaining = false; // 在下雨吗?否
bool passed = true; // 考试通过了吗?通过
数据类型总结表
| 类型 | 中文名 | 存储内容 | 示例 |
|---|---|---|---|
int | 整数 | 没有小数点的数字 | int age = 18; |
double | 小数/浮点数 | 有小数点的数字 | double price = 9.99; |
char | 字符 | 单个字符(单引号) | char grade = 'A'; |
string | 字符串 | 一串文字(双引号) | string name = "张三"; |
bool | 布尔 | 真或假 | bool isOK = true; |
✍️ 如何定义变量?
定义变量的格式:
数据类型 变量名 = 初始值;
示例
#include <iostream>
#include <string> // 使用 string 需要引入这个
using namespace std;
int main() {
// 定义整数变量
int age = 18;
// 定义小数变量
double height = 1.75;
// 定义字符变量
char grade = 'A';
// 定义字符串变量
string name = "张三";
// 定义布尔变量
bool isStudent = true;
// 输出变量的值
cout << "姓名:" << name << endl;
cout << "年龄:" << age << endl;
cout << "身高:" << height << " 米" << endl;
cout << "成绩等级:" << grade << endl;
cout << "是否是学生:" << isStudent << endl;
return 0;
}
输出:
姓名:张三
年龄:18
身高:1.75 米
成绩等级:A
是否是学生:1
为什么布尔值显示 1?
在 C++ 中,true 输出为 1,false 输出为 0。
🔄 修改变量的值
变量的值是可以改变的(所以才叫"变"量)。
#include <iostream>
using namespace std;
int main() {
int score = 80; // 初始分数是 80
cout << "初始分数:" << score << endl;
score = 90; // 修改分数为 90
cout << "修改后的分数:" << score << endl;
score = 100; // 再次修改为 100
cout << "最终分数:" << score << endl;
return 0;
}
输出:
初始分数:80
修改后的分数:90
最终分数:100
注意:第二次赋值不需要再写数据类型!
int score = 80; // ✅ 第一次定义,需要写类型
score = 90; // ✅ 修改值,不需要写类型
int score = 100; // ❌ 错误!不能重复定义同名变量
🌟 实战案例
案例1:个人信息卡
#include <iostream>
#include <string>
using namespace std;
int main() {
// 定义个人信息
string name = "李明";
int age = 20;
char gender = 'M';
double height = 1.80;
string hobby = "篮球";
// 输出个人信息卡
cout << "================================" << endl;
cout << " 个人信息卡" << endl;
cout << "================================" << endl;
cout << "姓名:" << name << endl;
cout << "年龄:" << age << " 岁" << endl;
cout << "性别:" << gender << endl;
cout << "身高:" << height << " 米" << endl;
cout << "爱好:" << hobby << endl;
cout << "================================" << endl;
return 0;
}
输出:
================================
个人信息卡
================================
姓名:李明
年龄:20 岁
性别:M
身高:1.80 米
爱好:篮球
================================
案例2:商品价格标签
#include <iostream>
#include <string>
using namespace std;
int main() {
// 商品信息
string productName = "苹果手机";
double price = 5999.00;
int stock = 100;
bool isAvailable = true;
// 输出价格标签
cout << "商品名称:" << productName << endl;
cout << "价格:¥" << price << endl;
cout << "库存:" << stock << " 件" << endl;
cout << "是否有货:" << (isAvailable ? "有货" : "缺货") << endl;
return 0;
}
输出:
商品名称:苹果手机
价格:¥5999
库存:100 件
是否有货:有货
案例3:学生成绩单
#include <iostream>
#include <string>
using namespace std;
int main() {
// 学生信息
string studentName = "王芳";
int studentID = 20240001;
// 各科成绩
double mathScore = 95.5;
double englishScore = 88.0;
double chineseScore = 92.5;
// 计算平均分
double average = (mathScore + englishScore + chineseScore) / 3;
// 输出成绩单
cout << "================================" << endl;
cout << " 成绩单" << endl;
cout << "================================" << endl;
cout << "学生姓名:" << studentName << endl;
cout << "学号:" << studentID << endl;
cout << "--------------------------------" << endl;
cout << "数学成绩:" << mathScore << " 分" << endl;
cout << "英语成绩:" << englishScore << " 分" << endl;
cout << "语文成绩:" << chineseScore << " 分" << endl;
cout << "--------------------------------" << endl;
cout << "平均分:" << average << " 分" << endl;
cout << "================================" << endl;
return 0;
}
输出:
================================
成绩单
================================
学生姓名:王芳
学号:20240001
--------------------------------
数学成绩:95.5 分
英语成绩:88 分
语文成绩:92.5 分
--------------------------------
平均分:92 分
================================
💡 变量命名规则
给变量起名字也有规矩:
✅ 可以使用
- 字母:
age,name,score - 数字(不能开头):
score1,test2 - 下划线:
student_name,total_score
❌ 不能使用
- 数字开头:
1age❌ - 特殊符号:
age!,name@❌ - 空格:
student name❌ - 中文(虽然支持,但不推荐):
年龄❌ - C++ 关键字:
int,double,return❌
🌟 命名建议
// ✅ 好的命名(清晰明了)
int studentAge = 18;
double productPrice = 99.99;
string userName = "张三";
// ❌ 不好的命名(看不懂什么意思)
int a = 18;
double x = 99.99;
string s = "张三";
原则:变量名要见名知意,让别人一看就知道是什么意思。
🎯 小结
这一章我们学习了变量和数据类型,让我们回顾一下:
| 概念 | 说明 |
|---|---|
| 变量 | 存储数据的"盒子",有名字、类型、值 |
| int | 整数类型,存储没有小数点的数字 |
| double | 小数类型,存储有小数点的数字 |
| char | 字符类型,存储单个字符(单引号) |
| string | 字符串类型,存储文字(双引号) |
| bool | 布尔类型,只有 true 或 false |
| 定义变量 | 类型 名字 = 值; |
| 修改变量 | 名字 = 新值;(不需要写类型) |
💪 练习题
现在轮到你动手了!完成这些练习:
- 定义一个整数变量
year,存储你的出生年份,并输出 - 定义一个字符串变量
city,存储你所在的城市,并输出 - 创建一个程序,定义你喜欢的一本书的信息(书名、价格、页数),并输出
- 创建一个程序,定义一个矩形的长和宽,计算并输出它的面积(面积 = 长 × 宽)
- 定义一个变量,赋初值后修改它的值,观察输出结果
点击查看参考答案
题目3 参考答案:
#include <iostream>
#include <string>
using namespace std;
int main() {
string bookName = "C++ Primer";
double price = 128.00;
int pages = 950;
cout << "书名:" << bookName << endl;
cout << "价格:¥" << price << endl;
cout << "页数:" << pages << " 页" << endl;
return 0;
}
题目4 参考答案:
#include <iostream>
using namespace std;
int main() {
double length = 10.5;
double width = 5.2;
double area = length * width;
cout << "矩形的长:" << length << endl;
cout << "矩形的宽:" << width << endl;
cout << "矩形的面积:" << area << endl;
return 0;
}
🚀 下一步
太棒了!你现在已经学会如何让程序"记住"数据了。
下一章,我们要学习如何让用户输入数据,以及各种运算符的使用,让程序变得更加互动!
