小伙伴们刚刚接触C语言编程,遇到的第一个板块就是数据类型和变量了,虽然这个板块在整个C语言中属于比较简单的内容,但是,“千里之行,始于足下”,“千里之堤,溃于蚁穴”,想要学好C语言,每一个板块都不可以存在漏洞,今天,通过这篇帖子,带大家完完全全学透C语言的数据类型和变量。
——————————————————————————————————————————
————————————————————————————————————————————————————————————————————————————————————------
目录
一.数据类型的介绍
· C语言提供了丰富的数据类型来描述生活中的各种数据。使用整型类型来描述整数,使字符类 型来描述字符,使用浮点型类型来描述小数。所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据。
· 数据类型的分类包括内置类型和自定义类型
· 本文将讲述内置类型。
常见的内置类型有:
· char 字符数据类型----用%c打印 ,大小为一个字节;
· int 整型---用%d打印,大小为4个字节;
· short 短整型---用%d打印,大小为2个字节;
· long 长整型---用%ld打印,大小为4个字节;
· long long 更长的整型---用%lld打印,大小为8个字节;
· float 单精度浮点型---用%f打印,大小为4个字节;
· double 双精度浮点型---用%lf打印,大小为8个字节;
· bool类型,这个类型比较特殊,专门用于判断真假,返回值为true或false,大小为一个字节,且bool类型在使用时,必须包含头文件<stdbool.h>
二.signed和unsigned
· C语言使用 signed 和 unsigned 关键字修饰字符型和整型类型的。
· signed 关键字,表示该类型带有正负号,包含负值;
· unsigned 关键字,表示该类型不带有正负号,只能表示零和正整数。
即signed和unsigned帮助在C语言中确定了正数和负数。
· 注意,对于int整型来说,默认就是自带signed的,所以写和不写signed没有区别,为了简洁,一般在写int时不写signed,但写了也不算错
· 但如果要表示非负整数时,就必须要带上unsigned。
· 再注意一次
· 注意,C语言中规定 char 类型默认是否带有正负号,由当前系统决定。
这就是说, char 不等同于 signed char ,它有可能是 signed char ,也有可能是
unsigned char 。
这点与 int 不同, int 就是等同于 signed int 。
三.变量
变量是C语言的大头
1.变量的创建 ![](https://img-blog.csdnimg.cn/7fc92cbf74134b14bb804228d984c2d1.gif)
· 什么是变量呢?C语⾔中把经常变化的值称为变量,不变的值称为常量。
· 创建变量的结构
data_type name;
data_type即数据类型,name即变量名;
举个例子吧:
int i;
char arr;
short a;
2.初始化
· 变量在创建的时候就给一个初始值,就叫初始化。
再举个例子:
int i = 0;
char arr = { 0 };
short a = 0;
3.变量的分类
· 变量分为全局变量和局部变量;
全局变量在大括号外部定义的变量就是全局变量;
看了全局变量的定义,那么想必局部变量的定义也就顾名思义了,在大括号内部定义的变量就是局部变量。
看到这里,你是不是觉得还是有点懵,嘿嘿,写段代码,康康吧
#include <stdio.h>
int a = 0;
int main()
{
int b = 0;
return 0;
}
a和b 就是变量,a在大括号外面,所以它就是全局变量啦,而b在大括号内部,所以它就是局部变量。
现在清楚全局变量和局部变量的区别了吧!
4.作用域和生命周期
· 作用域 通常来说,一段程序代码中所用到的名字并不总是有效 / 可用 的。而限定这个名字的可用性的代码范围就是这个名字的作用域。
简单来说,作用域就是这个变量起作用的区域,在作用域里面,这个变量就是有用的,作用域外面,这个变量就是没用的。
· 生命周期 变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。
通俗一点,生命周期就是这个变量的HP,在生命周期里,这个变量就还活着,生命周期结束,这个变量就没用了。
不说了,上代码
#include <stdio.h>
int a = 0;
int main()
{
int b = 0;
return 0;
}
嘿嘿,又是它
· 看这个全局变量a 的作用域就是整个工程,即整个代码,生命周期也是整个工程,从工程开始到工程结束,就是“你活着我就活着,你out了我也out”
· 这个局部变量b的作用域就是局部变量所在的大括号,生命周期是从进入大括号到出大括号,在大括号里面,诶嘿,b就是老大,出了大括号,b就泯没于众生,没了,哈哈哈,大概这么理解吧
5.局部优先原则
不知道到这里,小伙伴有没有想到一个有意思的事情,我们现实生活中当出现两个人同名的时候,是不是,会经常出现一些尴尬的乌龙呢
那么在写代码是出现相同的变量名,会出现什么现象呢?
这里就得引入局部优先原则啦
· 局部优先原则就是在代码运行的时候,当出现全局变量和局部变量的变量名相同的时候,编译器会优先使用局部变量
#include <stdio.h>
int n = 1000;
int main()
{
int n = 10;
printf("%d\n" ,n);//打印的结果是多少呢?
return 0;
}
小伙伴们,猜猜打印结果会是啥呢?
跑一下代码看看
ok,输出结果是10,对吧,这就是局部优先原则。
· 但建议局部变量和全局变量取两个不相同的名称。
6.确保安全性
· 根据全局变量的特性,作用域和生命周期是整个工程,这个特性就代表着全局变量不具有安全性。
发挥的聪明的小脑袋思考一下这句话!!!
当使用全局变量是,在一个庞大的工程中,可能在某个地方,需要对该变量进行改动,一旦,改动,那么整个工程中的这个变量将全部发生改变,于是,程序就报销了,这就是全局变量的不安全性带来的隐患。
· 因此,在编程时,尽量少用全局变量!
ok,今天的分享到这里就结束了,后续会持续更新更多有趣内容。
——————————————————————————————————————————————————————————————————————————————————————
--------------------------新人博主,制作不易,求个关注,求个点赞----------------------------------------------