C语言(数据和变量)

                     

                 Hi~!这里是奋斗的小羊,很荣幸各位能阅读我的文章,诚请评论指点,关注+收藏,欢迎欢迎~~

                💥个人主页:小羊在奋斗

                💥所属专栏:C语言   

        本系列文章为个人学习笔记,在这里撰写成文一为巩固知识,二为同样是初学者的学友展示一些我的学习过程及心得。文笔、排版拙劣,望见谅。       

                        一、数据类型

                                        1.sizeof操作符

                                        2.计算数据中的单位

                                        3.signed 和 unsigned

                                        4.数据类型的取值范围

                        二、变量

                                        1.变量的创建

                                        2.变量的分类

一、数据类型

1.sizeof操作符

        sizeof 是一个关键字,也是操作符,其作用是用来计算sizeof的操作符数的类型长度的,单位是字节。sizeof 操作符的操作数可以是类型,也可以是变量或表达式。如:sizeof(类型)、 sizeof 表达式。sizeof的操作数如果不是类型,是表达式的时候,可以省略掉后面的括号。

我们来看:

        sizeof 后面的表达式是不真实参与运算的,根据表达式的类型来得出大小。 该如何理解这句话呢?我们通过下面的实验就可以轻松理解:

        上面我们求出了各种数据类型的长度,单位是字节。 sizeof 的计算结果是size_t 类型的,用%zd来打印。C语言标准规定:sizeof(long)>=sizeof(int)。

2.计算数据中的单位(常见)

                       位(bit)                             ——bit                
                       字节(byte)                      ——B                    1B=8bit
                       千字节(kilobyte)             ——KB                 1KB=1024B
                       兆字节(megabyte)         ——MB                 1MB=1024KB
                       千兆字节(gigabyte)        ——GB                 1GB=1024MB
                       太字节(terabyte)            ——TB                  1TB=1024GB

 3. signed 和 unsigned         

        C语言使用signed 和 unsigned 关键字修饰字符型和整形类型。

        signed 关键字,表示一个类型带有正负号,包含负值。

        unsigned 关键字,表示该类型不带有正负号,只能表示零和正整数。

        对于int 类型,默认是带有正负号的,也就是说 int 等同于 signed int。 (一般我们省略不写)同样的,unsigned int 里的 int 也是可以省略的,unsigned int 就等同于 unsigned。

对于有无符号的打印是不相同的:

          

        值得一说的是,上面用无符号占位符%u来打印有符号数-10,显示出的是一个很大的整数,这其中是有一定道理的,感兴趣的朋友可以阅读我的另一篇文章 —> C语言(操作符)1,内容很细,还请内心阅读。

        整数变量声明为 unsigned 的好处是,同样长度的内存能够表示的最大整数值,增大了一倍。

4.数据类型的取值范围

        数据类型有很多,尤其是整形就有short、int、long、long long 四种,为什么呢?

        其实每一种数据类型都有它自己的取值范围,也就是存储的数值的最大值和最小值的区别,有了丰富的类型,我们就可以在适当的场合下去选择适合的类型。

        整型数据类型:
                 short:-32,768
~ 32,767
                 unsigned short:0
~ 65,535
                 int:-32,768
~ 32,767
                 unsigned int:0
~ 65,535 
                 long:-2,147,483,648
~ 2,147,483,647
                 unsigned long:0 ~ 4,294,967,295。

        浮点型数据类型:
                 float:1.2E-38 到 3.4E+38,至少6位有效数字
                 double:2.3E-308 到 1.7E+308,至少15位有效数字

        字符型数据类型:
                 char:-128
~ 127(取决于编译器实现)
                 unsigned char:0
~ 255

二、变量

1.变量的创建

        上一篇文章我们已经浅显地了解过了变量,这里我们来细细的探讨一下它。

        了解清楚了类型,我们使用类型做什么呢?类型是用来创建变量的。变量创建的基本语法形式为:    data_type name; (数据类型 表达式;)

        我们来打印上面创建的变量,看看会出现什么结果:

        可以看到,发生了生成错误。为什么呢?这是因为我们只是创建了一个变量,并没有给它赋值,所以编译器会因为不知道变量的值是多少而不能打印。我更喜欢把这个过程理解为:我们向存储器申请了一个空间来存放变量,但是我们并没有存进去一个值,导致这个空间里面是空的,编译器来这个空间找值的时候什么都没找到,所以也就无法打印。

        正确的做法应该是这样:

        还有一点值得我们特别注意

2.变量的分类

        2.1全局变量

        在大括号外部定义的变量就是全局变量,全局变量的使用范围更广,整个工程中使用,都是有办法使用的。(可以理解为公共的)。   

        2.2局部变量

        在大括号内部定义的变量就是局部变量,局部变量的适用范围比较局限,只能在自己所在的局部范围内(大括号内)使用。(可以理解为私有的)。

        这里我们提一下全局变量和局部变量初始化的问题。  全局变量在不初始化的时候,默认值是0;而局部变量在不初始化的时候,它的值是随机的。在VS上打印时会报错,在有些编译器上会打印出随机值。

        2.3如果全局变量和局部变量名字相同?

        这个问题很简单,我们遵循局部优先原则。还是来实验下验证这句话:

        2.4全局\局部变量存储的地址

        全局变量和局部变量在内存中存储在哪里呢?

        一般我们在学习c\c++语言的时候,我们会关注内存的三个区域:栈区、堆区、静态区。

        其实内存区域的划分会更加细致,这里我们也是只简单的了解一下。

                                  这小伙子真有趣,赶紧关注下~

                                 点击跳转主页—> 💥个人主页:小羊在奋斗

  • 40
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值