目录
一,常量
常量:不能改变的量,在程序的运行过程中,不能变化的量;
变量:能被改变的量,在程序的运行过程中,可能会改变或者被赋值的量;
常量分类
- 字面常量,如3; 3.14; 'A';
- #define定义的标识符常量;
- 枚举常量;
注:const修饰的变量称为常变量,本质上是变量;
#define MAX 10 //定义标识符常量
enum sex
{
male,female,secret //枚举常量
};
int main()
{
3; 3.14; 'A'; //字面常量
const int num = 4; //const修饰的常变量
enum sex s = male;
return 0;
}
二,变量
C语言中变量遵循“先定义后使用”的原则;
声明变量的公式:类型 + 标识符 + 封号;
注:可连续声明变量;
int main()
{
char c;
short s;
int n;
long l;
float f;
double d;
return 0;
}
int main()
{
//连续声明
int a, b, c, d;
return 0;
}
变量的初始化和赋值
- 在声明时赋值,称为初始化,只可初始化一次;
- 在声明后赋值,称为赋值,可多次赋值,相当于修改变量值;
int main()
{
//声明变量并初始化
int a = 0;
//声明变量后,在赋值
int b;
b = 1;
return 0;
}
变量的分类(根据作用域)
- 局部变量
- 全局变量
注:全局变量和局部变量名可相同,且局部变量优先(建议不要相同);
int num = 100; //全局变量(定义在{}之外的变量)
int main()
{
int num = 10; //局部变量(定义在{}之内的变量)
return 0;
}
变量作用域
- 作用域scope,程序设计概念,通常来说,一段代码中所用到的名字并不总是有效/可用的,而限定此名字的可用范围就是名字的作用域;
- 局部变量的作用域,即变量所在的局部范围;
- 全局变量的作用域,是整个工程;
变量生命周期
- 生命周期,变量的创建到变量的消亡之间的时间段;
- 局部变量的生命周期,进入作用域生命周期的开始,出作用域生命周期结束;
- 全局变量的生命周期,整个程序的生命周期;
变量的使用
如计算两个输入数的和;
int main()
{
int num1 = 10;
int num2 = 20;
scanf("%d%d", &num1, &num2); //将输入的数分别赋予num1、num2
int sum = 0; //C语言规定,变量要定义在代码块的最前面
sum = num1 + num2;
printf("sum = %d\n", sum);
return 0;
}
运行以上代码,会出现以下错误;
此错误建议使用scanf_s,但scanf是C语言提供的,scanf_s不是标准的c语言提供的,是VS编译器提供的,不具有跨平台性、可移植性;
可在代码最前面,添加#define _CRT_SECURE_NO_WARNINGS,即可消除忽略此错误‘
正确代码应为:
#define _CRT_SECURE_NO_WARNINGS //输入此代码即可避免报错
#include <stdio.h> //引用头文件stdio.h
int main()
{
int num1 = 10;
int num2 = 20;
int sum = 0;
scanf("%d%d", &num1, &num2); //将输入的数分别赋予num1、num2
sum = num1 + num2;
printf("sum = %d\n", sum);
return 0;
}
注:如想避免每次都要出入此代码,可在newc++file.cpp文件内输入#define _CRT_SECURE_NO_WARNINGS;此时新建源文件或头文件时,会自动添加此代码;
路径为:C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\VC\VCProjectItems
变量的命名(标识符)规则
- 命名应当直观可拼读,能望文知意,便于记忆和阅读,如使用英文单词;
- 标识符由大小写字母,数字和下划线组成。标识符不能以数字开头,并且必须与现有的关键词不同。
- 命名的长度应当符合“最小长度、最大信息”原则,如MaxValue;
- 当标识符由多个词组成时,每个词的第一个字母应大写,其余小写;
- 尽量避免名字中出现数字编号,如Value1,Value2 等,除非逻辑上的确需要编号;
- 对在多个文件之间共同使用的全局变量或函数要加范围限定符(建议使用模块名(缩写)作为范围限定符);
- 标识符名分为两部分:规范标识符前缀(后缀) + 含义标识。非全局变量可以不用使用范围限定符前缀;
- 作用域前缀命名规则。
- 数据类型前缀命名规则。
- 含义标识命名规则,变量命名使用名词性词组,函数命名使用动词性词组;
- 程序中不得出现仅靠大小写区分的相似的标识符,如int a、int A;
- 一个函数名禁止被用于其它之处;
- 所有宏定义、枚举常数、只读变量全用大写字母命名,用下划线分割单词;
- 考虑到习惯性问题,局部变量中可采用通用的命名方式,仅限于n、i、j 等作为循环变量使用;
- 定义变量的同时千万千万别忘了初始化,定义变量时编译器并不一定清空了这块内存,它的值可能是无效的数据;
- 不同类型数据之间的运算要注意精度扩展问题,一般低精度数据将向高精度数据扩展;