【发布时间】:2015-10-10 13:53:22
【问题描述】:
我在某些代码中使用 size_t 值时遇到了一个小问题。
首先我想使用 size_t 因为它[保证]在大多数平台上都是相同的大小,这样从 32 位到 64 位应该不会导致任何问题。
然后我否定了 size_t 的值并得到了一个非常大的数字,回过头来我意识到 size_t 是无符号的。有 intptr_t 也是有符号的,但应该用于指针,还有 uintptr_t 是无符号的,也用于指针。
我的最终目标是在 c 中实现一组简单的定点数学函数。
我的问题是我可以在我的所有计算中像 int 一样使用 uintptr_t 吗?这会导致任何问题吗?
【问题讨论】:
-
你试过
off_t吗? -
size_t 在 linux/gcc/32bit == 32bit,在 linux/gcc/64bit == 64bit
-
你的库的用例是什么?对于值的范围,您想提供什么保证?
-
用例是单位四元数和vector3和四元数到4x4矩阵。这部分代码仅此而已。由于四元数和弧度的小数部分更重,我希望小数部分有更多位。弧度的度数也可以适应高达 2pi 或其模数的大小。
-
唯一负值
ssize_t保证能够存储的是-1。