在某些代码中使用size_t值时,我遇到了一个小问题。
首先我想使用size_t,因为在大多数平台上[保证]大小相同,从32位到64位不应该导致任何问题。
然后我否定了size_t值并得到了一个非常大的数字,回头看我意识到size_t是无符号的。还有intptr_t,它也被签名但应该用于指针,而uintptr_t是无符号的,也用于指针。
我最终的目标是在c。
中实现一组简单的定点数学函数我的问题是我可以在所有计算中使用uintptr_t像int一样吗?这可能导致任何问题吗?
答案 0 :(得分:6)
如果要在所有平台上拥有完全相同的位数,只需使用stdint.h中定义的int32_t
答案 1 :(得分:1)
您可以考虑ptrdiff_t
这是指针差异产生的类型。在所有常见平台上,这应该是与size_t
对应的签名类型。