将size_t转换为long有什么缺点吗?因为,我正在编写一个在文件中维护linked_list的程序。因此,我遍历到另一个基于size_t的节点,并且我还记录了列表的总数,如size_t。因此,显然会有一些long和size_t的转换或添加。这样做有什么缺点吗?如果有,那么我会让所有的东西都一样长,而不是size_t,甚至是大小。请给我建议。
发布于 2012-04-09 02:52:08
不幸的是,"long“类型没有很好的理论基础。最初,它是在32位unix端口上引入的,目的是将它与现有PDP11软件假定的16位“整型”区分开来。后来,"int“在这些平台上被更改为32位(并引入了"short”)," long“和"int”成为同义词,它们在很长一段时间内都是同义词。
现在,在64位的类unix平台上(Linux、BSD、OS、iOS以及人们可能仍然关心的任何专有的unix),"long“是一个64位的数量。但是,不幸的是,不是在windows上:在现有的头文件中有太多的遗留“代码”,使得(整型)==sizeof(长)假设的大小,所以他们使用了一个叫"LLP64“的令人厌恶的东西,留下了32位的长度。叹一口气。
但是"size_t“不是这样的。它一直只意味着一件事:它是无符号类型,用于在地址空间中存储本机指针大小。如果你有一个需要整数表示形式的无符号(!--如果你需要有符号算术,使用ssize_t或ptrdiff_t )指针(即你需要存储一个对象的内存大小),这就是你要使用的。
https://stackoverflow.com/questions/10065150
复制相似问题