1.2 变量与数据类型 | Variables and Data Types

发布于 2025-09-14  506 次阅读


变量与数据类型 | Variables and Data Types

一、什么是变量?

还记得我们在Hello World程序中用printf("Hello, World!");输出固定文字吗?但在实际编程中,我们经常需要处理会变化的数据。比如:

  • 用户输入的年龄
  • 计算器中用户输入的两个数字
  • 游戏中玩家的得分

这时候,我们就需要用到变量(Variable)

变量是用来存储数据的"容器",就像现实中的盒子一样:

  • 每个盒子都有一个名字(变量名)
  • 盒子里可以放东西(存储数据)
  • 我们可以查看盒子里放了什么(读取变量的值)
  • 我们也可以更换盒子里的东西(修改变量的值)

二、数据类型简介

在C语言中,不同类型的数据需要用不同类型的"盒子"来装。这些不同的"盒子"就是数据类型(Data Type)

想象一下,你不会用装鞋子的盒子来装牛奶,也不会用装牛奶的瓶子来装沙子。同样,在C语言中:

  • 整数需要用整型变量来存储
  • 小数需要用浮点型变量来存储
  • 字符需要用字符型变量来存储

C语言的基本数据类型

数据类型 英文名称 关键字 说明 示例
整型 Integer int 存储整数 42, -10, 0
字符型 Character char 存储单个字符 'A', 'x', '3'
浮点型 Float float 存储小数 3.14, -2.5
双精度浮点型 Double double 存储更精确的小数 3.14159265359
布尔型 Boolean bool 存储“是”或“非”两种状态 true(也用1表示), false(也用0表示)

需要特别说明的是,使用bool型,需要引用stdbool.h头文件,即在源码开头使用#include <stdbool.h>

三、变量的声明与使用

1. 变量声明的语法

在C语言中,使用变量前必须先声明(Declaration)它。

数据类型 变量名;

这是在告诉编译器,我需要某一种类型的叫某个名字的变量,用来存放一些数值。例如:

int age;        // 声明一个整型变量,名叫age
char grade;     // 声明一个字符型变量,名叫grade
float height;   // 声明一个浮点型变量,名叫height

2. 变量的赋值

声明变量后,我们怎样向变量里存储数据?我们可以给它赋值(Assignment)

age = 18;           // 给age赋值18
grade = 'A';        // 给grade赋值字符'A'
height = 175.5;     // 给height赋值175.5

3. 声明时直接赋值(初始化)

我们也可以在声明变量的同时就给它赋值,这叫做初始化(Initialization)

int age = 18;           // 声明一个整形变量,名叫age,值为18
char grade = 'A';       // 声明一个字符型变量,名叫grade,值为字符'A'
float height = 175.5;   // 声明一个浮点型变量,名叫height,值为175.5

四、一个完整的示例程序

让我们通过一个实际的程序来看看变量的使用:

//VariablesAndDataType.c
#include <stdio.h>

int main() {
    // 声明并初始化变量
    int student_age = 20;
    char student_grade = 'B';
    float student_height = 168.5;

    // 修改变量的值
    student_age = 21;
    student_grade = 'A';

    return 0;
}

值得注意的是,尽管这个示例程序没有任何输入输出功能,即我们在运行时看不到任何显式的结果。但程序确实向计算机索要了三个变量,并修改了两个变量的值,这个过程是很快的,随即程序结束。

五、变量命名规则

在给变量起名字时,需要遵循以下规则:

必须遵守的规则:

  1. 只能包含字母、数字和下划线
  2. 必须以字母或下划线开头(不能以数字开头)
  3. 不能使用C语言中,已经有固定意义的关键字(如int、char、return等)
  4. 区分大小写(age和Age是不同的变量)

良好的命名习惯:

// ✅ 好的变量名
int student_age;        // 使用下划线分隔单词
int studentAge;         // 使用驼峰命名法
float pi;               // 简短有意义
char first_letter;      // 描述性强

// ❌ 不好的变量名
int a;                  // 意义不明确
int 2age;              // 以数字开头(语法错误)
int student-age;       // 使用了连字符(语法错误)
int return;             // 使用了关键字(在C++中会出错)

六、常见错误与注意事项

1. 数据类型不匹配

int age = 18.5;     // ❌ 不推荐:小数赋值给整型,会丢失小数部分
char letter = 65;   // ⚠️ 可以,但建议写成 char letter = 'A';

尽管数据类型不匹配的错误,是我们在编程的时候要尽量避免的,但C语言仍然针对这些失误,智能的提供了解决办法。即数据的强制转换。例如在上面的例子中,int age = 18.5;,编译可以通过,但数值18.5在赋值给整形的age时,被强制转换为了整数18。类似的还有将非0的数,如2-5520.1314赋值给布尔型的时候,会被强制转换为true,即1

2. 字符的表示方法

char letter1 = 'A';     // ✅ 正确:单引号表示字符
char letter2 = "A";     // ❌ 错误:双引号表示字符串
// 我们在上一章介绍printf输出一段固定文本的时候使用了双引号括起来的字符串。

七、动手练习

尝试编写一个程序:

  1. 选用合适的数据类型,声明三个变量分别存储你的姓名首字母、年龄和身高
  2. 给这些变量赋值
  3. 声明一个布尔型变量,并初始化储存你是否是男性。
  4. 尝试修改年龄的值
// 参考答案框架
#include <stdbool.h>
#include <stdio.h>

int main() {
    // 在这里声明你的变量
    char first_name_character;  // 声明一个char变量存储姓名首字母
    int age;                    // 声明一个int变量存储年龄
    float height;               // 声明一个float变量存储身高

    // 在这里赋值
    first_name_character = 'Z';
    age = 18;
    height = 176.0;

    //初始化一个布尔型变量,储存是否是男性
    bool is_male = true;        // 或: bool is_male = 1; 是等价的

    //尝试修改年龄的值:
    age = 80;

    return 0;
}

这里是 /* Huajidawang */ 的个人主页