目录
前言
1. 基本数据类型
2. 变量定义
3. 变量赋值
4. 数据溢出
5. 变量的生存周期及作用域
6. 练习
本章节主要介绍C语言变量
在C语言中,变量用于存储数据值。变量名是在程序中用于标识变量的名称,变量名可以由字母、数字和下划线组成,但不能以数字开头,变量定义时分配相应的内存空间。
在C语言中,变量必须先声明后使用。变量的声明包括变量名和变量类型。变量类型指定变量的数据类型,可以是整数类型、浮点类型、字符类型等
类型 | 长度 | 可变范围 |
unsigned char | 1byte | 0到255 |
char | 1byte | -128到127 |
unsigned int | 4byte(和系统及编译器相关) | 0到4294967295 |
int | 4byte(和系统及编译器相关) | -2147483648到2147483647 |
unsigned long | 4byte(和系统及编译器相关) | 0到4294967295 |
long | 4byte(和系统及编译器相关) | -2147483648到2147483647 |
float | 4byte | -3.4E+38到3.4E+38 |
double | 8byte | -1.79E+308到+1.79E+308 |
*(指针类型) | 4byte(和系统及编译器相关) |
字符型和整型支持用unsigned修饰;float类型及double类型不支持用unsigned修饰。
在C语言中,变量必须先声明后使用。变量的声明包括变量名和变量类型。变量名在程序中应该是唯一的,不能与C语言的保留字相同。变量类型指定变量的数据类型,可以是整数类型、浮点类型、字符类型等。例如:
int age; //定义了一个整数类型的变量age
float salary; //定义了一个浮点类型的变量salary
char grade; //定义了一个字符类型的变量grade
变量的赋值是将一个值赋给一个已经声明的变量。例如:
age = 25; //将25赋给变量age
salary = 5000.50; //将5000.50赋给变量salary
grade = 'A'; //将字符‘A’赋给变量grade
变量的值可以在程序执行期间改变,也可以初始化赋值。例如:
int num = 10; //定义了一个整数类型的变量num并初始化为10
int result; //定义了一个整数类型的变量result
result = num + 5; //将num+5的结果赋给变量result
num = 20; //将变量num的值改为20
赋值时需要注意数据的异常,否则将达不到预期效果,例如:
#include
int main()
{
unsigned char result = 0;
unsigned int num = 1000;
result = num;
printf("num=%u,result=%u\n", num, result);
return 0;
}
运行结果:num=1000,result=232
变量的作用域是指在程序中访问变量的有效范围。它决定了在哪些地方可以使用变量,以及变量在不同位置的值是否可见。
变量的作用域通常分为以下几种类型:
全局作用域(Global scope):在整个程序中都可以访问的变量。它在程序开始运行时创建,直到程序结束时才会销毁。
局部作用域(Local scope):仅在特定代码块或函数中可访问的变量。它在代码块或函数被执行时创建,当代码块或函数结束时销毁。
块级作用域(Block scope):在某个代码块中定义的变量,只能在该代码块内访问。块级作用域通常指的是由花括号({})包围的语句块,比如if语句、for循环等。
函数作用域(Function scope):在函数中定义的变量,只能在该函数内部访问。函数作用域是指变量在函数体中的可见性范围。
作用域规则的主要目的是避免变量名冲突和提高代码的可读性。在同一个作用域中,变量名必须是唯一的,否则可能会导致命名冲突和意外的结果。
当在程序中引用一个变量时,编程语言会按照一定的规则搜索符号表来确定该变量的作用域和值。如果找不到对应的变量,可能会引发编译错误或运行时错误。
变量的生存周期是指变量存在的时间。在程序中,变量的生存周期可以分为以下几个阶段:
声明阶段:变量被声明时开始其生存周期。
初始化阶段:变量被初始化时,其值被赋予,该阶段可以省略。
在作用域内的生存周期:变量在其作用域内存在,可被引用和修改。
出作用域的生存周期:当变量所处的作用域结束时,变量会被销毁。在函数内,变量在函数结束时销毁;在全局作用域中,变量在程序结束时销毁。
需要注意的是,如果变量在函数中被分配在堆上,则其生存周期不仅仅限于函数内。在这种情况下,变量只有在手动释放内存或系统垃圾回收时才会被销毁。
全局变量的生存周期是指在程序运行期间始终存在的变量。全局变量在程序启动时被创建,在程序结束时被销毁,作用域为全局作用域。
#include
unsigned int num = 1000; //全局变量,作用域为整个程序运行期间
void fun()
{
unsigned int result = 0; //局部变量,作用域仅仅在fun函数中
result = num;
printf("fun, num=%u, result=%u\n", num, result);
}
int main()
{
fun();
printf("main, num=%u\n", num);
return 0;
}
fun, num=1000, result=1000
main, num=1000
作用域也可以被改变,后面会有专门的章节介绍!