[英]Is it correct to assign int64_t or int32_t to ptrdiff_t?
在移植c ++跨平台(Windows和Linux)32位代碼以適應64位環境的同時,我遇到以下問題:
在32位系統上,將int32_t類型的值分配給ptrdiff_t類型在功能上是否正確?
在64位系統上,將int64_t類型的值分配給ptrdiff_t類型在功能上是否正確?
失去興趣:在64位系統上,將int32_t類型的值分配給ptrdiff_t類型在功能上是否正確?
上下文:帶符號的ptrdiff_t值在某些迭代器算法中使用,並且在迭代器算術邏輯中使用減法時可能取負值。
實際上, ptrdiff_t
在32位系統上為32位,在64位系統上為64位。 (1)不能小於。 在16位系統上,它必須至少為17位(是的,這不是錯字)。
如您所問,可能某些維護代碼的人對此不確定。
對於他們來說,只需static_assert
大小要求,例如static_assert( sizeof(ptrdiff_t) >= sizeof(int), "")
。
(1) ptrdiff_t
必須足以表示連續數組中指向char
的任何兩個任意指針的指針差,因此它必須支持最大可能的字節數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.