常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。
常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。常量就像是常规的变量,只不过常量的值在定义后不能进行修改。
就好比现实生活中生男生女一样, 生下来是男孩永远都是男孩, 生下来是女孩就永远都是女孩, 所以
性别就是现实生活中常量的一种体现
整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。
整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。
下面列举几个整数常量的实例:
212 /* 合法的 */
215u /* 合法的 */
0xFeeL /* 合法的 */
078 /* 非法的:8 不是八进制的数字 */
032UU /* 非法的:不能重复后缀 */
以下是各种类型的整数常量的实例:
85 /* 十进制 */
0213 /* 八进制 */
0x4b /* 十六进制 */
30 /* 整数 */
30u /* 无符号整数 */
30l /* 长整数 */
30ul /* 无符号长整数 */
浮点常量由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。
当使用小数形式表示时,必须包含小数点、指数,或同时包含两者。当使用指数形式表示时,必须包含整数部分、小数部分,或同时包含两者。带符号的指数是用 e 或 E 引入的。
下面列举几个浮点常量的实例:
3.14159 /* 合法的 */
314159E-5L /* 合法的 */
510E /* 非法的:不完整的指数 */
210f /* 非法的:没有小数或指数 */
.e55 /* 非法的:缺少整数或分数 */
在 C 中,有两种简单的定义常量的方式:
请注意,把常量定义为大写字母形式,是一个很好的编程实践。
使用 #define 预处理器定义常量的形式:#define identifier value
#include <stdio.h>
#define LENGTH 10
#define WIDTH 5
#define NEWLINE '\n'
int main()
{
int area;
area = LENGTH * WIDTH;
printf("value of area : %d", area);
printf("%c", NEWLINE);
return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:
value of area : 50
您还可以使用 const 前缀声明指定类型的常量:const type variable = value;
具体请看下面的实例:
#include <stdio.h>
const int LENGTH = 10;
const int WIDTH = 5;
const char NEWLINE = '\n';
int main()
{
int area;
area = LENGTH * WIDTH;
printf("value of area : %d", area);
printf("%c", NEWLINE);
return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:
value of area : 50
1.编译器处理方式
2.类型检查
3.内存空间
4.调试
我这里只是想强调define的作用非常强大,虽然它没有类型检测,不能调试,还要考虑边界效应,但是正因为没有类型检测,预编译是就完成,才使得它的使用更加灵活,功能更加强大,如果我们可以善用define,往往可以发挥到意想不到的效果。
"量"表示数据。变量,则表示一些不固定的数据,也就是可以改变的数据就好比现实生活中人的身高、体重一样,随着年龄的增长会不断发生改变,所以身高、体重就是现实生活中变量的一种体现,还有就是现实生活中超市的储物格一样,同一个格子在不同时期不同人使用,格子中存储的物品是可以变化的。张三使用这个格子的时候里面放的可能是尿不湿,但是李四使用这个格子的时候里面放的可能是面包
为什么要定义变量?, 任何变量在使用之前,必须先进行定义,只有定义了变量才会分配存储空间,才有空间存储数
为什么要限定类型?, 用来约束变量所存放数据的类型。一旦给变量指明了类型,那么这个变量就只能存储这种类型的数据据 ,内存空间极其有限,不同类型的变量占用不同大小的存储空间
为什么要指定变量名称?, 存储数据的空间对于我们没有任何意义,我们需要的是空间中存储的值, 只有,有了名称,我们才能获取到空间中的值, 就好比,你叫张三,他叫李四, 如果没有名称那么如何让对方知道我们是在和他说话,难道就喂喂喂, 在商场人多的情况下,你试试,看看回头率
格式1:变量类型 变量名称;
int a;
float b;
char ch;
格式2:变量类型 变量名称,变量名称...;
多个变量之间用逗号(,)号隔开
int a,b,c;
变量名属于标识符,所以必须严格遵守标识符的命名原则
在C语言中,利用=号
往变量里面存储数据, 我们称之为给变量赋值
int value;
value = 998; // 赋值
注意:
这里的=号,并不是数学中的“相等”,而是C语言中的赋威值运算符,作用是将右边的整型常量998赋值给左边的整型变量value ,赋值的时候,=号的左侧必须是变量,为了方便阅读代码,习惯在=的两侧各加上一个空格
C语言中,变量的第一次赋值,我们称为“初始化 ,初始化的两种形式:
先定义后初始化
int value;
value=998;//初始化
定义时同时初始化
int a = 10;
int b = 4,c=2;
多次赋值即可,每次赋值都会覆盖原来的值
int i = 10;
i = 20; // 修改变量的值
可以将一个变量存储的值赋值给另一个变量
int a = 10;
int b = a; // 相当于把a中存储的10拷贝了一份给b
使用printf输出一个或多个变量的值
int a = 10, c = 11;
printf("a=%d, c=%d", a, c);
输出其它类型变量的值
double height 1.75;
char blood 'A';
printf("hei ght=%.2f,血型是%c",height,blood);
任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问。 C语言中所有变量都有自己的作用域, 变量定义的位置不同,其作用域也不同, 按照作用域的范围可分为两种, 即局部变量和全局变量
局部变量也称为内部变量,局部变量是在代码块内定义的, 其作用域仅限于代码块内, 离开该代码块后无法使用 ,我们来看几个案例:
int main(){
int i = 998; // 作用域开始
return 0;// 作用域结束
}
全局变量也称为外部变量,它是在代码块外部定义的变量
int i =666;
int main(){
printf("i = %d\n",i);//可以使用
return 0;
}
int call(){
printf("i = %d\n",i);//可以使用
return 0;
}
注意: 同一作用域范围内不能有相同名称的变量
不同作用域范围内可以有相同名称的变量
字节和地址
一个变量所占用的存储空间,和定义变量时声明的类型以及当前编译环境有关
根据定义变量时声明的类型和当前编译环境确定需要开辟多大存储空间, 开辟时从内存地址大的开始开辟(内存寻址从大到小), 将数据保存到已经开辟好的对应内存空间中
先不要着急, 刚开始接触C语言, 我先了解这么多就够了. 后面会再次更深入的讲解存储的各种细
节。
点赞 -收藏-关注-便于以后复习和收到最新内容有其他问题在评论区讨论-或者私信我-收到会在第一时间回复感谢,配合,希望我的努力对你有帮助^_^
免责声明:本文部分素材来源于网络,版权归原创者所有,如存在文章/图片/音视频等使用不当的情况,请随时私信联系我。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://huanmin.blog.csdn.net/article/details/125583867
内容来源于网络,如有侵权,请联系作者删除!