Skip to content

    二.C++ 基础:变量、数据类型、常量与注释

    在构建复杂的程序之前,我们必须先了解那些最基本的“积木”:如何存储数据、数据有哪些种类、如何给它们命名,以及如何为自己(和他人)留下笔记。

    1. 注释 (Comments)

    注释是写给看的笔记,而不是给电脑看的。C++ 编译器会完全忽略注释。注释的目的是解释代码“为什么”这么做,或者让代码更易读。

    C++ 中有两种注释方式:

    1. 单行注释 (//): 从 // 开始,直到这一行的末尾,所有内容都是注释。
    2. 多行注释 (/\* ... \*/): 从 /* 开始,到 */ 结束,中间可以跨越多行,所有内容都是注释。

    C++

    Plain Text
    #include <iostream>
    using namespace std;
    
    // 这是一个单行注释。main 函数是程序的入口点。
    int main() {
        
        // 下面这行代码会向控制台输出 "Hello!"
        cout << "Hello!" << endl; 
        
        /* 这是一个多行注释。
           我们可以用它来写更详细的说明。
           下面的代码(虽然被注释掉了)本可以用来...
           int x = 5; 
        */
        
        // 你也可以用多行注释来临时“关闭”一行代码的一部分
        int y = 10; /* + 5; */ // 编译器只会看到 int y = 10;
        
        cout << "y = " << y << endl;
    
        return 0; // 单行注释:表示程序正常结束
    }

    运行结果示例:

    Plain Text
    Hello!
    y = 10

    2. 变量 (Variables)

    变量可以看作是内存中一个贴了标签的“盒子”,专门用来存储特定类型的数据。你可以随时更改盒子里装的东西(即变量的值)。

    使用变量分三步:

    1. 声明 (Declaration): 告诉编译器你要创建一个盒子,它叫什么名字(标识符),能装什么类型的数据。
    2. 初始化 (Initialization): 在声明盒子的同时,就给它放入一个初始值。(推荐!)
    3. 赋值 (Assignment): 在声明之后,用新的值替换掉盒子里的旧值。

    C++

    Plain Text
    #include <iostream>
    using namespace std;
    
    int main() {
        // 1. 声明 (Declaration)
        // 创建了一个名为 age 的盒子,它只能装整数 (int)
        // 此时盒子里是“垃圾值”(未定义),使用它很危险
        int age; 
        
        // 2. 赋值 (Assignment)
        // 将值 20 放入 age 盒子
        age = 20;
        cout << "Age after assignment: " << age << endl;
    
        // 3. 初始化 (Initialization) - 推荐的方式
        // C-style (等号) 初始化
        int score = 100; 
        
        // C++11 统一初始化 (花括号) - 更现代、更安全
        double height{1.75}; 
        
        cout << "Initial score: " << score << endl;
        cout << "Initial height: " << height << endl;
        
        // 变量的值是可以被改变的
        score = 95; // 赋值,覆盖掉旧值 100
        cout << "Final score: " << score << endl;
        
        return 0;
    }

    运行结果示例:

    Plain Text
    Age after assignment: 20
    Initial score: 100
    Initial height: 1.75
    Final score: 95

    3. 基本数据类型 (Basic Data Types)

    数据类型告诉编译器一个变量(盒子)能存储什么样的数据,以及它在内存中占多大空间。

    以下是 C++ 中最常用的几种基本数据类型:

    类型描述示例
    int整型。用于存储整数(没有小数)。int age = 20;
    double双精度浮点型。用于存储小数,精度很高。double pi = 3.14159;
    float单精度浮点型。也用于存储小数,但精度和范围小于 doublefloat price = 19.99f; (注意 f 后缀)
    char字符型。用于存储单个字符(字母、数字、符号)。char grade = 'A'; (注意用单引号)
    bool布尔型。用于存储逻辑值,只有 truefalse 两种可能。bool isRaining = false;

    sizeof() 运算符:可以用来查看某个数据类型或变量占用了多少字节(Bytes)的内存。

    C++

    Plain Text
    #include <iostream>
    using namespace std;
    
    int main() {
        // 整型
        int i = 123;
        // 在算法竞赛中,如果数字非常大(超过21亿),常用 long long
        long long bigNumber = 10000000000LL; 
        
        // 浮点型
        double pi = 3.14159265; // 精度高
        float gravity = 9.8f;   // 精度低,通常加 'f' 
        
        // 字符型
        char initial = 'J';
        
        // 布尔型
        bool isLoggedIn = true; // 'true' 是一个关键字
        
        // 打印值
        cout << "Integer: " << i << endl;
        cout << "Double: " << pi << endl;
        cout << "Char: " << initial << endl;
        cout << "Bool: " << isLoggedIn << endl; // cout 默认会把 true 打印成 1
        
        // 打印占用的内存大小(单位:字节)
        // 结果可能因你的系统(32位/64位)而异
        cout << "--- Memory Sizes ---" << endl;
        cout << "Size of int: " << sizeof(int) << " bytes" << endl;
        cout << "Size of double: " << sizeof(double) << " bytes" << endl;
        cout << "Size of char: " << sizeof(char) << " byte" << endl;
        cout << "Size of bool: " << sizeof(bool) << " byte" << endl;
        
        return 0;
    }

    运行结果示例 (在 64 位系统上):

    Plain Text
    Integer: 123
    Double: 3.14159
    Char: J
    Bool: 1
    --- Memory Sizes ---
    Size of int: 4 bytes
    Size of double: 8 bytes
    Size of char: 1 byte
    Size of bool: 1 byte

    4. 常量 (Constants)

    常量和变量很像,也是一个存储数据的“盒子”,但它有一个铁律:一旦在初始化时放入了值,就永远不能再被修改

    常量用来存储那些在程序运行期间不应改变的值(如圆周率 、数学常数、配置参数等)。

    有两种定义常量的方式:

    1. const 关键字 (C++ 方式 - 推荐): 这是现代 C++ 的首选方式。它创建了一个真正的、有类型的常量。
    2. #define 预处理器 (C 风格方式): 这是一个预处理器指令。它在编译前会把代码中所有的 MAX_SIZE 文本直接替换100

    C++

    Plain Text
    #include <iostream>
    using namespace std;
    
    // 方法2:#define 预处理器
    // 注意:没有类型,没有分号 ;
    // 在算法竞赛中常用于定义数组的最大大小
    #define MAX_ARRAY_SIZE 100
    
    int main() {
        // 方法1:const 关键字 (推荐)
        // 'const' 告诉编译器,PI 的值不能被修改
        const double PI = 3.14159; 
        const string SITE_NAME = "MyWebsite.com";
        
        cout << "Constant PI: " << PI << endl;
        cout << "Constant Site: " << SITE_NAME << endl;
        
        // 尝试修改 const 常量会导致编译错误!
        // PI = 3.14; // <-- 这行代码会报错!
        
        // #define 的使用
        int myArray[MAX_ARRAY_SIZE]; // 编译器实际看到的是 int myArray[100];
        
        cout << "Max array size: " << MAX_ARRAY_SIZE << endl;
        
        return 0;
    }

    运行结果示例:

    Plain Text
    Constant PI: 3.14159
    Constant Site: MyWebsite.com
    Max array size: 100

    关键点回顾:

    • 注释 (//, /* */):给开发者看的笔记,编译器会忽略。
    • 变量 (int x = 5;):可变的、有类型的“盒子”,用于存储数据。
    • 数据类型 (int, double, char, bool):定义了“盒子”能装什么、占多大。
    • 常量 (const double PI = 3.14;):不可变的“盒子”,初始化后值不能被修改。