C++ 从入门到精通C++ 从入门到精通
首页
基础教程
进阶教程
实战项目
编程指南
首页
基础教程
进阶教程
实战项目
编程指南
  • 🚀 C++ 基础入门

    • 📚 C++ 基础教程
    • 第1章 - 环境搭建和第一个程序
    • 第2章 - 变量和数据类型
    • 第3章 - 输入输出和运算符
    • 第4章 - 条件判断
    • 第5章 - 循环语句
    • 第6章 - 函数基础
    • 第7章 - 数组和字符串

第2章 - 变量和数据类型

嗨,朋友!我是长安。

上一章我们写出了第一个程序,能在屏幕上显示文字了。但你有没有发现一个问题?我们的程序只能显示写死的内容,不够灵活。

这一章,我要教你一个超级重要的概念——变量。有了它,你的程序就能"记住"数据,变得更加智能!

🤔 什么是变量?

生活中的例子

想象一下,你的书桌上有很多盒子:

  • 铅笔盒 - 专门装笔
  • 饼干盒 - 专门装零食
  • 钱包 - 专门装钱

每个盒子都有:

  1. 名字(铅笔盒、饼干盒、钱包)
  2. 类型(装什么东西)
  3. 内容(盒子里具体放了什么)

编程中的变量就像这些盒子:

  • 变量名 - 盒子的名字
  • 数据类型 - 盒子能装什么类型的东西
  • 变量值 - 盒子里具体的内容

编程中的变量

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
定义变量类型 名字 = 值;
修改变量名字 = 新值;(不需要写类型)

💪 练习题

现在轮到你动手了!完成这些练习:

  1. 定义一个整数变量 year,存储你的出生年份,并输出
  2. 定义一个字符串变量 city,存储你所在的城市,并输出
  3. 创建一个程序,定义你喜欢的一本书的信息(书名、价格、页数),并输出
  4. 创建一个程序,定义一个矩形的长和宽,计算并输出它的面积(面积 = 长 × 宽)
  5. 定义一个变量,赋初值后修改它的值,观察输出结果
点击查看参考答案

题目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;
}

🚀 下一步

太棒了!你现在已经学会如何让程序"记住"数据了。

下一章,我们要学习如何让用户输入数据,以及各种运算符的使用,让程序变得更加互动!

➡️ 第3章 - 输入输出和运算符

最近更新: 2025/12/26 17:25
Contributors: 王长安
Prev
第1章 - 环境搭建和第一个程序
Next
第3章 - 输入输出和运算符