2012-07-25 32 views
0

可能重複:
int_least64_t vs int_fast64_t vs int64_t什麼是stdint.h中描述的「快速類型」?

例如,什麼是以下類型的,爲什麼/何時使用它們之間的區別?

  • int64_t
  • int_least64_t
  • int_fast64_t
+1

您是否嘗試過Google搜索?你發現了什麼? – YePhIcK 2012-07-25 12:13:47

+0

@YePhIcK:是的我使用谷歌搜索,但最後我更喜歡這裏給出的回覆 – Destroyica 2012-07-25 12:19:43

+1

@Destroyica:YePhIcK給出的鏈接*回答你的問題,而不需要再次輸入。 (幸運的是,如果我知道答案,我先輸入,然後再搜索。對於你這樣做的問題,應該是相反的。) – DevSolar 2012-07-25 12:30:13

回答

5

int64_t的一種類型 64位寬度,二進制補碼錶示,並且沒有填充位。這是有用的,例如在二進制界面中工作;它的存在是可選,僅在具有具有的整數類型的架構上定義。

int_least64_t是最小可能的類型至少 64位寬度,帶有實現定義的表示形式和填充。如果64位寬度不可用,則可能更寬。適用於需要特定最小值範圍的算法。

int_fast64_t是一種至少爲64位寬度的類型。如果CPU能夠更高效地處理更寬泛的類型,那麼它可能更寬一些,交換內存佔用空間以提高速度。

第一個是非常具體的。如果底層硬件很棘手,另外兩個給編譯器一些擺動空間,即告訴編譯器在什麼情況下你會接受比請求更寬的類型。

+0

也許值得注意的是'intN_t'必須是二進制補碼,並且沒有填充位。 – 2012-07-25 12:35:15

+0

@DanielFischer:...並且是可選的,是的。具有這種類型的平臺應該定義這些類型,但是平臺可能沒有這些類型,不定義這些類型,並且仍然完全符合。 (也就是說,一個使用例如補碼的平臺,它的short,int,long等可能沒有定義任何intN_t類型,但仍然完全符合。) – DevSolar 2012-07-25 12:45:28

+0

好點,可選性,特別是因爲最小和快速是必需的標準寬度8/16/32/64。 – 2012-07-25 12:48:08

1

他們是類型設計爲容納他們說的位,但對於CPU架構進行了優化。

這意味着在64位機器上,fast16_t可能是64位大小;它不應該依賴於實際的字體大小,例如如果你寫一個結構到磁盤。爲此使用「正常」類型。