507 字
1 分钟
【C】变量常量与数据类型
变量定义
int num = 1; // 类型 变量名 初值(可选)局部变量
- 定义在函数(或块)内部
- 若未初始化,其值不确定(自动存储期),使用前必须赋值
- 离开作用域后失效
全局 / 静态变量
- 定义在函数外,或使用
static修饰的局部变量 - 未显式初始化时,数值类型默认为 0,指针默认为 NULL
- 生命周期为整个程序运行期间
就近原则
编译器解析同名标识符时,优先选用最近作用域中的定义。局部变量与全局变量同名时,在局部作用域内局部变量会屏蔽全局变量。
int x = 10;
void foo(void) { int x = 20; printf("%d\n", x); // 20}常量
字面量常量
- 整型:
42、0xFF - 实型:
3.14、1.0e-2 - 字符:
'A' - 字符串:
"hello"(类型为char[]或char*)
符号常量
#define MAX 100 // 预处理宏,文本替换
const int MAX_VAL = 100; // const 变量,有类型检查#define在预处理阶段替换,无类型检查const由编译器处理,更安全,推荐用于只读变量
进制转换
二进制转八进制、十六进制时,从低位向高位分组:
- 每 3 位二进制 → 1 位八进制
- 每 4 位二进制 → 1 位十六进制
示例:1101 1010₂ = 332₈ = DA₁₆
有符号整数与取值范围
补码示意(以 4 位为例)

- 共 2⁴ 个编码;最高位为符号位,可表示负数
- 可表示范围约为 -2ⁿ⁻¹ ~ 2ⁿ⁻¹ - 1(n 为位数)
无符号溢出

- 无符号数超出位数能表示的范围时,高位被丢弃,数值按模 2ⁿ 回绕
- 例:4 位无符号
1111(15) + 1 →0000(0)
基本数据类型与格式符
| 类型 | 典型字节数(依平台而定) | printf 格式符 | 说明 |
|---|---|---|---|
char | 1 | %d 或 %c | 字符;%hhd 打印为整数时 |
unsigned char | 1 | %u / %hhu | |
short | 2 | %hd | |
unsigned short | 2 | %hu | |
int | 4 | %d | |
unsigned int | 4 | %u | |
long | 4 或 8 | %ld | 依平台 |
unsigned long | 4 或 8 | %lu | |
long long | 8 | %lld | C99 |
unsigned long long | 8 | %llu | |
float | 4 | %f | printf 中 %f 可用于 float(会提升) |
double | 8 | %f 或 %lf | printf 推荐 %f;scanf 读 double 用 %lf |
long double | 8~16 | %Lf | 依平台 |
说明:long、long double 的字节数依赖编译器与 ABI,移植时需用 sizeof 确认。
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
【C】变量常量与数据类型
https://lysj.work/posts/studynotes/c/c变量常量与数据类型/ 部分信息可能已经过时
相关文章 智能推荐
1
【C】开发环境与调试
StudyNote C语言概述,搭建开发环境
2
【C】输入输出与类型转换
StudyNote 介绍 printf、scanf 等标准 I/O 函数,以及赋值、算术隐式转换与强制类型转换的用法与注意点。
3
【C】void与特殊数组类型
StudyNote void 的三种用法、柔性数组成员、变长数组 VLA 与二维数组的存储与传参方式。
4
【C】数组与字符串
StudyNote 讲解一维数组初始化、C 字符串与 NUL 结尾约定,以及 string.h 常用函数与 sizeof。
5
【C】结构体联合体与枚举
StudyNote 结构体内存对齐、联合体共享内存、枚举常量及 typedef 与
