当前位置:  开发笔记 > 编程语言 > 正文

为什么size_t存在于C/C++中并且可以/应该被替换?

如何解决《为什么size_t存在于C/C++中并且可以/应该被替换?》经验,为你挑选了1个好方法。

我是一名电气工程师,他转向计算机科学家.我很难理解为什么在C++中有这么多东西几乎相同但不完全相同.一个例子是shortVS intVS unsigned intVS size_tVS long intVS long long intVS uint8_t(我不知道是否有指定的整数任何其他方式).它似乎使语言不必要地变得复杂.

可能或应该size_t被替换或者是否有任何功能无法以其他方式使用?


[编辑]

在有用的答案之后,还有一些我还没有完全看到的东西.size_t一些人建议,在便携性和性能方面很有用.但是有多大帮助,是否有一种定量方法或数字证据来衡量优势而不仅仅是让int所有兄弟退休?



1> vsoftco..:

std::size_t是一个unsigned基本类型的typedef ,它应该能够表示程序中任何可能的索引/大小(从技术上讲,它也是sizeof运算符的结果).其基本基本类型,可以在不同的实现方式不同,因为你想可移植性,使用std::size_t和不在乎了它是否是一个unsigned long intunsigned long long int等.

std::size_t不使用任何不可能以其他方式使用的功能,它只是一个方便的类型别名,仅此而已.

响应OP编辑

@HoapHumanoid编辑对于StackOverflow来说不是一个很好的问题,因为它是个人解释/偏好的问题.当然,您只能使用一种数字类型或固定大小的类型,但是当您想要从处理器中挤出尽可能多的性能时,最好有很多,每种都能够代表特定的范围,具体取决于物理平台.由于计算机体系结构是千差万别的,每个架构将强制使用自己的大小,例如int,long当您与便携性结合这一问题等等,那么size_t出现自然.您还会在通用函数中使用什么,例如,保证在每个可能的实现上分配尽可能多的内存?你会int用来传递字节数吗?或许long int?您需要阅读编译器手册,检查相应的类型等,然后使用它.这就是C++实现为您所做的,定义了一个合适的类型.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有