C/C++知识点之基本内置类型(1)
小标 2018-08-10 来源 : 阅读 1425 评论 0

摘要:本文主要向大家介绍了C/C++知识点之基本内置类型(1),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之基本内置类型(1),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

C++的数据类型是用来对内存的指定区域描述含义及可执行操作的。有效数字:一个数学概念具体讲就是 从左边第一个不是0的数字起,到末位数止,这中间所有的数字都叫这个近似数字的有效数字

wchar_t、char16_t、char32_t都是用来放字符的,其实字符也很有意思,我会专门写一个篇外篇来讲述一下 感兴趣的可以看一下 https://www.cnblogs.com/ChattyKu/p/9408260.html

所有内置类型都列出来了,并没有多少。

好像一张表已经表示了所有,没有更多的知识点了。然而更重要的是下面的内容,甚至比类型都重要。

首先说说这些类型是怎么放在内存中的

(别说你不想了解,它就好像不同材质的杯子具有不同的特性,玻璃杯子一摔就破,而塑料或者金属的则不存在这种风险。这种认知是基于你对材料特性的了解而得出的)

如何将它们解释为不同的类型

首先,所有的信息都存储在内存或硬盘中,先来看看它们什么样



 

在程序员眼中,内存是无数个小房子(数量大小取决于你的内存容量)

每个房子只有两种可能 0 或者 1

要访问这些房子,就需要房子的门牌号码,而这个门牌号就是我们所说的内存地址

地址有了,就可以获取或者修改房子里的东西了

等等,不是说只有0或1么,哪来的其他的东西。

然后,对于C++而言,类型决定了如何去解读一段内存。

类型决定了它所占的大小以及解读的方式

就像一个笑话 胸前的口袋,装一支笔学生,装两支笔会计,装三支笔教授,装四支笔卖笔的商贩

而今天我们读到的类型就是用来解释内存的一种规定。

来看看用不同的类型解读一段相同的内存会有什么不同

复制代码
 1 #include 
 2 
 3 int main()
 4 {
 5     int a = 58;
 6     void* pa = &a;
 7     std::cout << "bool:" << *(bool*)pa // 强制将指针转换为指定的类型,不经过系统的类型转换机制,直接扭转一段内存的类型属性
 8     << "\nchar:" << *(char*)pa
 9     << "\nwchar_t:" << *(wchar_t*)pa 
10     << "\nchar16_t:" << *(char16_t*)pa 
11     << "\nchar32_t:" << *(char32_t*)pa 
12     << "\nshort:" << *(short*)pa 
13     << "\nint:" << a
14     << "\nlong:" << *(long*)pa 
15     << "\nlong long:" << *(long long*)pa 
16     << "\nfloat:" << *(float*)pa 
17     << "\ndouble:" << *(double*)pa 
18     << "\nlong double:" << *(long double*)pa ;
19     return 0;
20 }
复制代码


 



另外告诉大家一个秘密,这个代码每次运行的结果都不是完全一样的

原因在于我们使用int进行初始化,所以序号1 2 3 4四行被按照要求初始化了,但是序号4 5 6 7 四行的内存空间值是随机的

当类型的解析大于4个字节(也就是32位)的时候,值就会变成一个不可预测的值

其实关于内存布局,还有一些有意思的事情,我会单独写文章来说说他们

 

在C++中还有一个重要的类型描述,有符号和无符号

使用signed和unsigned 来表示,不写默认就是signed所以在代码中我们一般只会看到unsigned

是否带有符号则决定了类型的表示范围

char这个类型,带符号表示-128 - 127,无符号表示 0 - 255

这里得出这个结果非常简单,char由8个位组成,八个0和1一共有256(2的8次方)种不同的组合,所以能表示的数一共256个

其他的类型也可以通过类似的算法来得出表示范围。

 

接下来要敲黑板、划重点了

请记住并尽量去运用下面关于类型选择的一些建议

1. 当明确知晓数值不可能为负值时,选用无符号类型

2. 使用int进行整数计算。因为它与机器字长相同,所以效率最高

3. 计算表达式中不要使用char 或bool。因为char在不同的机器上是否有符号也不同,在C++标准中并没有强制规定

4. 浮点运算请使用double,原因与2相同

 

内置类型以及类型的作用差不多就这些

其实在C++作为一种强类型的语言,在类型的学习上一定要多下功夫,虽然内置类型很少,但是自定义类类型为我们开辟了无比广阔的空间    

本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved