c中的数学的size_t,intptr_t和uintptr_t

时间:2015-07-21 08:04:00

标签: c math size-t

在某些代码中使用size_t值时,我遇到了一个小问题。

首先我想使用size_t,因为在大多数平台上[保证]大小相同,从32位到64位不应该导致任何问题。

然后我否定了size_t值并得到了一个非常大的数字,回头看我意识到size_t是无符号的。还有intptr_t,它也被签名但应该用于指针,而uintptr_t是无符号的,也用于指针。

我最终的目标是在c。

中实现一组简单的定点数学函数

我的问题是我可以在所有计算中使用uintptr_t像int一样吗?这可能导致任何问题吗?

2 个答案:

答案 0 :(得分:6)

如果要在所有平台上拥有完全相同的位数,只需使用stdint.h中定义的int32_t

答案 1 :(得分:1)

您可以考虑ptrdiff_t这是指针差异产生的类型。在所有常见平台上,这应该是与size_t对应的签名类型。