赞
踩
在C语言中:
在程序运行过程当中 其值固定不变的叫做常量
在程序运行过程当中 其值可以变化的叫做变量
我们来讨论一下定义、声明、赋值、初始化这几个概念
定义:为变量分配的内存空间 并且为其提供了初始值
int a1 = 10;// 属于定义
int a2;
a2 = 10;// 也属于定义 其中int a2包括了分配内存的过程 a2 = 10包括了为a2提供初始值的过程
声明:告诉编译器变量的存在
int a1;// 属于声明
int a2 = 10;// 也属于声明 其中声明的部分为int a2
初始化:在声明变量的同时对变量提供初始值
int a1 = 10;// 属于初始化
赋值:为声明以后的变量提供新值 初始化就是特殊的赋值
int a1 = 10;// 属于赋值
int a2;
a2 = 10;// 属于赋值
int a3 = 10;
a3 = 20;// 属于赋值
而且对于初始化和赋值有值得注意的点:
变量赋值可以多次进行 但是变量初始化则不能够多次进行(本质上就是不能够对变量进行多次声明)
int main(){
int a = 100;
int a = 200;// error
int b = 100;
b = 200;// ok
return 0;
}
声明变量的格式为:变量类型+标识符+分号 诸如int a;
前面我们说到了 所谓标识符 就是自定义的各种变量、函数以及其他实体的名称
而关键词则是语言当中赋予了特殊含义的词汇
标识符需要被编译器所识别才能够被使用 也就是说标识符需要先声明或者定义后使用
但是关键词不同 他可以直接使用
以下是对标识符不同情景的使用
int main(){
// 第一种情景就是:先声明后使用 这是正确的做法
int a1;
printf("%d\n", a1);
// 第二种情景就是:未声明即使用
printf("%d\n", a2);// error
// 第三种情景就是:先使用后声明
printf("%d\n", a3);// error
int a3;
return 0;
}
但是对于第一种情景 我是在clion中进行编写的 clion中允许打印声明未提供初始值的变量 但是在visual studio中只允许打印声明并提供初始值的变量 所以说同一种行为 在不同的编译器处有着不同的理解和处理方式
变量属于标识符的一种 所以他需要遵循标识符的命名规则
标识符的命名规则是什么
1.由数字、字母、下划线组成(和Java有些许不同 Java允许包含美元符号)
2.不能以数字开头
3.区分大小写
4.不能使用关键字
常量就是在程序运行过程当中固定不变的数值
我们可以将其分成两类:分别是字面常量和符号常量
前面讲过了 字面常量是直接写出来的数值 诸如:1.1(浮点型常量)、1(整型常量)、“axihh”(字符串常量)等等
我们平常在使用整型字面常量的时候 一般默认都是int类型 除非这个数值超过了int的范畴 才继续往上寻找上限更高的类型 比如:unsigned int、long、unsigned long、long long、unsigned long long
但是在visual studio中 long和int表示的范畴一致 而unsigned long和unsigned int表示的范畴也一致 所以想上找的起点应该设置为long long
int main(){
// int的上限是2147483647 所以显然用int类型标识2150000000这个比上限还大的数是不妥的 结果不符合预期 只能选择一个上限更高的类型来装载 即unsigned int
unsigned int a = 2150000000;
int b = 2150000000;
printf("%u\n", a);// 2150000000
printf("%d\n", b);// -2144967296
return 0;
}
对于浮点型字面常量来说的话 一般默认都是double类型
格式为:#define 符号常量 值
这个符号常量有个好处就是:
当我们在程序中多出地方使用到同一个常量 而且后续需要改变这个常量值的话 那么维护起来就十分不方便 需要频繁改动 效率极其之低 引入了符号常量 就大大的提高了效率
#define PRICE 3
int main(){
printf("%d", PRICE);// 3
return 0;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。