变量详解
嗨,我是长安!
变量是编程的基础中的基础。我记得当年学变量的时候,一开始也觉得很抽象,但慢慢理解后发现其实很简单。今天我来用最简单的方式给你讲清楚。
什么是变量?
变量就像一个贴了标签的盒子,用来存储数据。这是我当年学习时最能理解的比喻。
graph LR
A[变量 age] --> B[盒子里装着: 18]
C[变量 name] --> D[盒子里装着: 小明]
生活中的例子:
- 你的储物柜 = 变量
- 柜子的编号 = 变量名
- 柜子里的东西 = 变量的值
为什么需要变量?
没有变量的程序:
printf("小明今年 18 岁\n");
printf("18 岁可以考驾照了\n");
printf("18 是成年的年龄\n");
如果年龄改了,要改很多地方!😫
有了变量:
int age = 18;
printf("小明今年 %d 岁\n", age);
printf("%d 岁可以考驾照了\n", age);
printf("%d 是成年的年龄\n", age);
只需要改一个地方!😊
变量的声明和使用
基本语法
数据类型 变量名 = 初始值;
例子
#include <stdio.h>
int main() {
// 声明一个整数变量
int age = 18;
// 使用变量
printf("年龄是:%d\n", age);
return 0;
}
输出:
年龄是:18
变量声明的三种方式
方式1:声明并初始化
int age = 18; // 推荐!
float height = 1.75;
char grade = 'A';
方式2:先声明后赋值
int age; // 声明
age = 18; // 赋值
方式3:同时声明多个变量
int a = 10, b = 20, c = 30;
// 或者
int x, y, z;
x = 1;
y = 2;
z = 3;
⚠️ 长安的血泪教训
使用未初始化的变量会得到垃圾值(随机值),我当年为这个bug找了好久:
int age;
printf("%d\n", age); // ❌ 错误!age没有初始化
养成好习惯:变量声明时就初始化!这能帮你避免很多奇怪的bug。
变量命名规则
必须遵守的规则
- 只能包含:字母、数字、下划线
- 不能以数字开头
- 不能使用关键字(如int、return等)
- 区分大小写(age和Age是不同的变量)
// ✅ 合法的变量名
int age;
int student_age;
int studentAge;
int age2;
int _age;
int AGE;
// ❌ 不合法的变量名
int 2age; // 不能以数字开头
int student-age; // 不能有连字符
int int; // 不能用关键字
int 年龄; // 不能用中文
命名建议
// ✅ 好的命名(见名知意)
int studentAge; // 驼峰命名法
int student_age; // 下划线命名法
int maxScore;
int totalCount;
// ❌ 不好的命名
int a; // 太简短,看不懂
int age1, age2; // 最好用更明确的名字
int xueshengAge; // 不要用拼音
💡 长安的命名建议
这些是我工作5年总结出来的经验:
- 变量名要有意义,别学我当年用a、b、c
- 用英文,不要用拼音(我吃过这个亏)
- 统一命名风格(驼峰或下划线),我现在用驼峰
- 短小但清晰
变量的赋值和修改
#include <stdio.h>
int main() {
// 初始赋值
int age = 18;
printf("初始年龄:%d\n", age);
// 修改变量的值
age = 19;
printf("修改后年龄:%d\n", age);
// 再次修改
age = 20;
printf("再次修改:%d\n", age);
return 0;
}
输出:
初始年龄:18
修改后年龄:19
再次修改:20
格式化输出 printf
printf 可以输出不同类型的变量,使用格式化占位符:
常用格式化符号
| 占位符 | 数据类型 | 示例 |
|---|---|---|
%d | 整数(int) | printf("%d", 123); |
%f | 浮点数(float/double) | printf("%f", 3.14); |
%c | 字符(char) | printf("%c", 'A'); |
%s | 字符串 | printf("%s", "Hello"); |
%p | 指针地址 | printf("%p", &age); |
实例演示
#include <stdio.h>
int main() {
int age = 18;
float height = 1.75;
char grade = 'A';
// 单个变量
printf("年龄:%d\n", age);
printf("身高:%f\n", height);
printf("等级:%c\n", grade);
// 多个变量
printf("我今年%d岁,身高%.2f米,成绩是%c\n", age, height, grade);
return 0;
}
输出:
年龄:18
身高:1.750000
等级:A
我今年18岁,身高1.75米,成绩是A
格式控制
#include <stdio.h>
int main() {
float pi = 3.1415926;
printf("默认:%f\n", pi); // 默认6位小数
printf("2位小数:%.2f\n", pi); // 保留2位小数
printf("4位小数:%.4f\n", pi); // 保留4位小数
int num = 42;
printf("右对齐:%5d\n", num); // 占5位,右对齐
printf("左对齐:%-5d***\n", num); // 占5位,左对齐
printf("补零:%05d\n", num); // 占5位,前面补0
return 0;
}
输出:
默认:3.141593
2位小数:3.14
4位小数:3.1416
右对齐: 42
左对齐:42 ***
补零:00042
常量
常量是不能修改的值。
方式1:使用 const 关键字
#include <stdio.h>
int main() {
const int MAX_AGE = 120;
printf("最大年龄:%d\n", MAX_AGE);
// MAX_AGE = 130; // ❌ 错误!常量不能修改
return 0;
}
方式2:使用 #define 宏定义
#include <stdio.h>
#define PI 3.1415926
#define MAX_SIZE 100
int main() {
printf("圆周率:%f\n", PI);
printf("最大容量:%d\n", MAX_SIZE);
return 0;
}
💡 常量命名
常量通常用全大写字母,单词间用下划线分隔:
PIMAX_SIZEDEFAULT_VALUE
实战案例
案例1:计算圆的面积
#include <stdio.h>
#define PI 3.1415926
int main() {
float radius = 5.0;
float area;
// 计算面积:π × r²
area = PI * radius * radius;
printf("半径为 %.2f 的圆,面积是 %.2f\n", radius, area);
return 0;
}
输出:
半径为 5.00 的圆,面积是 78.54
案例2:温度转换(华氏度转摄氏度)
#include <stdio.h>
int main() {
float fahrenheit = 98.6; // 华氏度
float celsius; // 摄氏度
// 公式:C = (F - 32) × 5/9
celsius = (fahrenheit - 32) * 5.0 / 9.0;
printf("华氏度 %.2f°F = 摄氏度 %.2f°C\n", fahrenheit, celsius);
return 0;
}
输出:
华氏度 98.60°F = 摄氏度 37.00°C
案例3:交换两个变量的值
#include <stdio.h>
int main() {
int a = 10;
int b = 20;
int temp; // 临时变量
printf("交换前:a = %d, b = %d\n", a, b);
// 交换
temp = a;
a = b;
b = temp;
printf("交换后:a = %d, b = %d\n", a, b);
return 0;
}
输出:
交换前:a = 10, b = 20
交换后:a = 20, b = 10
练习题
练习1:个人信息
编写程序,用变量存储并打印你的个人信息:
- 姓名
- 年龄
- 身高
- 体重
练习2:计算长方形面积
// 要求:
// 长 = 10.5
// 宽 = 6.5
// 计算并打印面积和周长
练习3:时间转换
// 已知秒数 = 3725
// 转换成:X小时Y分钟Z秒
// 提示:
// 小时 = 秒数 / 3600
// 分钟 = (秒数 % 3600) / 60
// 秒 = 秒数 % 60
答案参考
练习1答案
#include <stdio.h>
int main() {
char name[] = "小明";
int age = 18;
float height = 1.75;
float weight = 65.5;
printf("===== 个人信息 =====\n");
printf("姓名:%s\n", name);
printf("年龄:%d岁\n", age);
printf("身高:%.2f米\n", height);
printf("体重:%.1f千克\n", weight);
return 0;
}
练习2答案
#include <stdio.h>
int main() {
float length = 10.5;
float width = 6.5;
float area, perimeter;
area = length * width;
perimeter = 2 * (length + width);
printf("长方形信息:\n");
printf("长:%.2f\n", length);
printf("宽:%.2f\n", width);
printf("面积:%.2f\n", area);
printf("周长:%.2f\n", perimeter);
return 0;
}
练习3答案
#include <stdio.h>
int main() {
int totalSeconds = 3725;
int hours, minutes, seconds;
hours = totalSeconds / 3600;
minutes = (totalSeconds % 3600) / 60;
seconds = totalSeconds % 60;
printf("%d秒 = %d小时%d分钟%d秒\n",
totalSeconds, hours, minutes, seconds);
return 0;
}
知识点总结
- ✅ 变量是存储数据的容器
- ✅ 变量要先声明后使用
- ✅ 变量名要有意义
- ✅ 使用
%d、%f、%c等格式化输出 - ✅ 常量用
const或#define定义 - ✅ 变量声明时最好初始化
下一步
了解了变量,接下来学习数据类型!
👉 数据类型详解