C语言中的变量

张开发
2026/4/16 14:23:14 15 分钟阅读

分享文章

C语言中的变量
3. 数据类型的取值范围上述的数据类型很多尤其数整型类型就有short、int、long、long long四种为什么呢 其实每⼀种数据类型有⾃⼰的取值范围也就是存储的数值的最⼤值和最⼩值的区间有了丰富的类 型我们就可以在适当的场景下去选择适合使用的数据类型。如果要查看当前系统上不同数据类型的极限值limits.h ⽂件中说明了整型类型的取值范围。float.h 这个头⽂件中说明浮点型类型的取值范围。为了代码的可移植性需要知道某种整数类型的极限值时应该尽量使⽤这些常量。4.变量4.1 变量的创建刚才我们了解清楚了数据类型那么我们使⽤数据类型做什么呢类型是⽤来创建变量的。什么是变量呢C语⾔中把经常变化的值称为变量不变的值称为常量。变量创建的语法形式是这样的data_type name | | | | 数据类型 变量名4.1.0 变量的本质(内存视角):变量的本质是内存中一块被命名的存储空间例如 int age 18; 时,依次做了 3 件事先根据int数据类型在内存中申请 4 字节32 位 / 64 位系统通用的空间,再给这块空间起名字叫age,最后把数值18写入这块空间中.4.1.1 变量命名的⼀般规则(1).只能由字⺟(包括⼤写和⼩写)、数字和下划线 _ 组成。中文、特殊符号 # $ - 等绝对不能用部分编译器支持下划线开头但不推荐容易和系统内置变量冲突(但可以作为中间连接).(2).不能以数字开头。eg: int 1age; 是语法错误int age1; 是合法的.(3).⻓度不能超过63个字符。C99 标准要求编译器至少支持 63 个有效字符超过部分部分编译器会截断建议变量名简洁明了不要过长.(4).在变量名中严格区分字母⼤⼩写。eg:int Age;和int age;是两个完全不同的变量新手极易踩坑.(5).变量名不能使⽤C语言中的关键字。C 语言有 32 个标准关键字如int if for return等不能作为变量名部分编译器有扩展关键字如__asm),也不要用.int age; //整型变量 char ch; //字符变量 double weight; //浮点型变量4.1.2 最佳命名规范工程级要求)(1).见名知意用有意义的英文单词比如age代表年龄weight代表体重不要用abc这种无意义命名.(2).风格统一:小驼峰userAgestudentScoreJava/JS 常用C 中也可(就是第一个单词开头字母小写,后面的所有单词开头字母都大写).下划线user_agestudent_scoreC 语言工程中最常用Linux 内核风格(3).避免歧义不要用l小写 L、I大写 i、O大写 o、0数字 0这类易混淆字符4.1.3 变量初始化如果我们在变量在创建的时候就给它⼀个初始值那这就叫初始化。// 1. 定义时直接初始化推荐最安全 int age 18; // 2. 先定义后赋值注意未赋值前变量是垃圾值 int age; age 18; // 3. 多个同类型变量同时定义初始化 int a 1, b 2, c 3; // 正确 int a, b 2, c; // 正确仅b初始化a、c未初始化4.1.3.1常见的坑:(1). 未初始化就使用变量int age; printf(%d, age); // 错误age是随机的垃圾值结果不可控(2). 多个变量定义时漏写类型int a, b 10; // 正确a是intb是int且初始化为10 int a 10, b; // 正确 int a, int b 10; // 错误第二个int多余语法报错(3). 类型不匹配的初始化隐式转换风险int age 18.9; // 编译器会隐式截断小数age18可能不符合预期 double weight 48; // 隐式转换为48.0通常安全但要注意精度4.2 变量的分类变量分为局部变量和全局变量,具体如下:其中的作用域很重要,局部变量出作用域会被销毁掉,不能再找到使用,而全局变量的生命周期与程序相同.#include stdio.h int global 2023; //全局变量 int main() { int local 2018; //局部变量 printf(%d\n, local); printf(%d\n, global); return 0; }全局变量默认初始化为 0而局部变量未初始化则是随机值垃圾值#include stdio.h int g_global; // 全局变量默认初始化为0 int main() { int a; // 局部变量未初始化值为随机垃圾值 static int b; // 静态局部变量默认初始化为0 printf(全局变量g_global: %d\n, g_global); // 输出0 printf(局部变量a: %d\n, a); // 输出随机值如-858993460 printf(静态局部变量b: %d\n, b); // 输出0 return 0; }如果局部和全局变量名字相同呢当局由此可见当局部变量和全局变量同名的时候局部变量被优先使用.4.3 全局变量和局部变量在内存中存储位置⼀般我们在学习C/C语⾔的时候我们会关注内存中的三个区域栈区、堆区、静态区。1.局部变量是放在内存的栈区2.全局变量是放在内存的静态区3.堆区是⽤来动态内存管理的后期会介绍

更多文章