变量与数据类型 | 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;
}
值得注意的是,尽管这个示例程序没有任何输入输出功能,即我们在运行时看不到任何显式的结果。但程序确实向计算机索要了三个变量,并修改了两个变量的值,这个过程是很快的,随即程序结束。
五、变量命名规则
在给变量起名字时,需要遵循以下规则:
必须遵守的规则:
- 只能包含字母、数字和下划线
- 必须以字母或下划线开头(不能以数字开头)
- 不能使用C语言中,已经有固定意义的关键字(如int、char、return等)
- 区分大小写(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、-5、520.1314赋值给布尔型的时候,会被强制转换为true,即1。
2. 字符的表示方法
char letter1 = 'A'; // ✅ 正确:单引号表示字符
char letter2 = "A"; // ❌ 错误:双引号表示字符串
// 我们在上一章介绍printf输出一段固定文本的时候使用了双引号括起来的字符串。
七、动手练习
尝试编写一个程序:
- 选用合适的数据类型,声明三个变量分别存储你的姓名首字母、年龄和身高
- 给这些变量赋值
- 声明一个布尔型变量,并初始化储存你是否是男性。
- 尝试修改年龄的值
// 参考答案框架
#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;
}



Comments | NOTHING