一、变量
当局部变量与全局变量名字冲突的情况下,局部定义优先。
?变量的可变性证明:
#include<stdio.h>
int main()
{
int a = 0, b = 0, sum = 0;
printf("请输入两整数用空格键隔开\n");
scanf("%d %d", &a, &b);
sum = a + b;
printf("总和结果为%d\n", sum);
return 0;
}
scanf输入函数,输入需用&+变量
但运行之后会发现报错
?原因在于vs2019对scanf函数有不安全警告,解决方法为每回在开头加上#define _CRT_SECURE_NO_WARNINGS 1来解除安全警告,但这样不免有些麻烦。
先以管理员身份打开一个空记事本,再用空记事本打开处于\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\VC\VCProjectItems下的newc++file.cpp文件
加上#define _CRT_SECURE_NO_WARNINGS 1这样每次新建源文件就会自动在开头加上该指令
?变量a,b,sum初期所赋予值后续均可改变
二、变量的作用域
1、局部变量作用域
#include<stdio.h>
int main()
{
printf("Hello World!\n");
{
int a = 2022;//a为局部变量
printf("This year is %d!\n", a);
}
return 0;
}
内部的大括号之内就是局部变量a的作用域,其括号之外无法引用。
2、全局变量作用域
?int b = 233 建立全局变量,其作用域包括整个项目中的每个项,但于此同时需要先使用extern b来声明全局变量b,然后b才可以被引用。
三、变量的生命周期
四、常量
1、字面常量
"abcd" 0.99 24 'h'
?2、const修饰的常变量
#include<stdio.h>
const int g = 114514;
int main()
{
g = 233;
printf("g = %d\n", g);
return 0;
}
?const修饰下g为常变量具有不变性
?const修饰下g为常变量本质上依旧为变量不被识别为常数
?3、#define定义标识的符的常量
#include<stdio.h>
#define x 20
int main()
{
int t = x;
printf("%d\n", t);
return 0;
}
4、枚举常量
#include<stdio.h>
enum options
//列举这种枚举类型的变量的未来可能取值
{
A,
//枚举常量
B,
C,
D,
};
int main()
{
enum options z = A;
//给变量z赋值,只能赋ABCD四个值中的一个
printf("变量z为%d\n", z);
printf("%d\n", A);
//将四个枚举常量都打印出来
printf("%d\n", B);
printf("%d\n", C);
printf("%d\n", D);
return 0;
}
会得到以下结果
?可见枚举常量为常量,其数值默认从第一个的0往下开始每个枚举常量数值依次递增,同时也可以给首位枚举常量进行赋初值,来改变数值,但依旧是相同递增模式。
?
|