【C++】零基础入门 · 第 2 节:变量、基本数据类型与输入输出

上一节我们写了第一个 C++ 程序,学会了编译和运行。这一节来学习编程中最基础的概念------变量和数据类型,以及怎么从键盘读取用户输入、怎么把结果显示到屏幕上。

1. 变量是什么

变量就是一个「盒子」,用来存放数据。每个盒子有一个名字(变量名)和一个类型(决定能放什么数据)。

在 C++ 里,使用变量之前必须先声明它的类型。这叫「强类型」------你不能把文字塞进一个专门放数字的盒子里。

cpp 复制代码
int age = 20;        // 声明一个整数变量 age,值为 20
double height = 1.75; // 声明一个浮点数变量 height
char grade = 'A';     // 声明一个字符变量 grade
string name = "小明"; // 声明一个字符串变量 name(需要 #include <string>)

变量命名规则:

  • 只能包含字母、数字和下划线 _
  • 不能以数字开头(1age 是错的,age1 是对的)
  • 不能使用 C++ 关键字(比如 intreturnif
  • 区分大小写(Ageage 是两个不同的变量)

2. 基本数据类型

C++ 提供了几种常用的内置数据类型:

2.1 整数类型

cpp 复制代码
int a = 42;          // 最常用的整数类型,通常占 4 字节
long long b = 1e18;  // 超大整数,占 8 字节
short c = 100;       // 短整数,占 2 字节
unsigned int d = 10; // 无符号整数,只能存非负数

int 的范围大约是 -21 亿到 21 亿,日常使用足够了。如果数字特别大,用 long long

2.2 浮点类型(小数)

cpp 复制代码
float x = 3.14f;     // 单精度,占 4 字节,精度约 6~7 位
double y = 3.14159;  // 双精度,占 8 字节,精度约 15 位

一般用 double 就行,精度更高。float 在需要节省内存的场景(比如图形处理)才用。

2.3 字符类型

cpp 复制代码
char ch = 'A';       // 单个字符,占 1 字节

注意字符用单引号 包裹,字符串用双引号

2.4 布尔类型

cpp 复制代码
bool isStudent = true;  // 只有两个值:true 或 false
bool isAdult = false;

布尔类型在条件判断中非常常用。

3. 输出:用 cout 打印信息

cout 是 C++ 标准库提供的输出工具,配合 << 运算符把数据显示到屏幕上。

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    int age = 20;
    string name = "小明";
    double score = 95.5;

    // 输出变量
    cout << "姓名:" << name << endl;
    cout << "年龄:" << age << endl;
    cout << "成绩:" << score << endl;

    // endl 表示换行并刷新输出
    // 也可以用 "\n" 来换行
    cout << "Hello\n";

    return 0;
}

编译运行后输出:

复制代码
姓名:小明
年龄:20
成绩:95.5
Hello

<< 可以连续使用,把多个内容拼在一起输出。endl\n 的区别是 endl 会强制刷新缓冲区,一般用 \n 就够了。

4. 输入:用 cin 读取用户数据

cin 配合 >> 运算符,可以从键盘读取用户输入:

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    string name;
    int age;

    cout << "请输入你的姓名:";
    cin >> name;

    cout << "请输入你的年龄:";
    cin >> age;

    cout << "你好," << name << "!你今年 " << age << " 岁。" << endl;

    return 0;
}

运行后程序会等你输入,输入完按回车继续。

注意: cin >> 读字符串时遇到空格会停止。比如输入 Zhang Sanname 只会拿到 Zhang。如果需要读取带空格的整行内容,用 getline

cpp 复制代码
string fullName;
cout << "请输入你的全名:";
getline(cin, fullName);  // 可以读取包含空格的整行

5. 类型转换

有时候需要在不同类型之间转换:

cpp 复制代码
// 隐式转换(自动)
int a = 3;
double b = a;  // int 转 double,b = 3.0

// 显式转换(手动)
double pi = 3.14;
int n = (int)pi;  // n = 3,小数部分被截断

// 更安全的 C++ 风格转换
int m = static_cast<int>(pi);  // 效果一样,更推荐

intdouble 没有精度损失,反过来会丢失小数部分。

6. 一个完整的小例子

写一个简单的「自我介绍」程序,综合运用上面的知识:

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    string name;
    int age;
    double height;
    char grade;

    cout << "=== 自我介绍 ===" << endl;
    cout << "请输入姓名:";
    getline(cin, name);
    cout << "请输入年龄:";
    cin >> age;
    cout << "请输入身高(米):";
    cin >> height;
    cout << "请输入成绩等级(A/B/C/D):";
    cin >> grade;

    cout << "\n--- 你的信息 ---" << endl;
    cout << "姓名:" << name << endl;
    cout << "年龄:" << age << " 岁" << endl;
    cout << "身高:" << height << " 米" << endl;
    cout << "等级:" << grade << endl;

    return 0;
}

7. 常见错误

忘记包含头文件 :用了 string 但没写 #include <string>,编译器会报错。

变量未初始化就使用

cpp 复制代码
int x;
cout << x;  // 未定义行为,输出一个随机值

养成声明变量时就赋初值的习惯。

类型不匹配

cpp 复制代码
int a;
cin >> a;
// 用户输入 "hello",cin 会进入错误状态,后续输入全部失效

后面会学到输入验证的方法,初学阶段先确保输入正确的数据类型。

8. 小结

这一节我们学了:

  • 变量是存放数据的「盒子」,使用前要声明类型
  • 常用数据类型:int(整数)、double(小数)、char(字符)、string(字符串)、bool(布尔)
  • cout << 用于输出,cin >> 用于输入
  • getline(cin, str) 可以读取带空格的整行输入

下一节我们将学习条件判断(if / switch),让程序能根据不同情况做出不同的反应。

相关推荐
段ヤシ.18 分钟前
回顾Java知识点,面试题汇总Day12(持续更新)
java·mybatis
java1234_小锋27 分钟前
Spring AI 2.0 开发Java Agent智能体 - MCP(模型上下文协议)
java·人工智能·spring·spring ai
seven97_top32 分钟前
两小时入门Sentinel
java·sentinel
叶小鸡33 分钟前
Java 篇-项目实战-AI 天机学堂(从 0 到 1)-day1
java·开发语言
bigbearxyz43 分钟前
Caused by: java.net.SocketException: Connection reset问题排查
java·keepalived·proxysql
浅念-1 小时前
LeetCode 回溯算法题——综合练习
数据结构·c++·算法·leetcode·职场和发展·深度优先·dfs
楼田莉子2 小时前
C++17新特性:__had_include/属性/求值顺序规则
开发语言·c++·后端
香蕉鼠片2 小时前
Python进阶学习
开发语言·python
500843 小时前
昇腾 CANN 的五层架构,到底分了哪五层
java·人工智能·分布式·架构·ocr·wpf
摇滚侠3 小时前
Java 零基础全套教程,File 类与 IO 流,笔记 177-178
java·开发语言·笔记