小标
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
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号