首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C语言(数据和变量)

C语言(数据和变量)

作者头像
_小羊_
发布2024-10-16 14:46:05
发布2024-10-16 14:46:05
4600
举报
文章被收录于专栏:C++C++

Hi~!这里是奋斗的小羊,很荣幸各位能阅读我的文章,诚请评论指点,关注+收藏,欢迎欢迎~~ 💥个人主页:小羊在奋斗 💥所属专栏:C语言

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

一、数据类型

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++语言的时候,我们会关注内存的三个区域:栈区、堆区、静态区。

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、数据类型
    • 1.sizeof操作符
    • 2.计算数据中的单位(常见)
    • 3. signed 和 unsigned
    • 4.数据类型的取值范围
  • 二、变量
    • 1.变量的创建
    • 2.变量的分类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档