我在看stdint.h,並且假設它有uint16_t和uint_fast16_t,uint_least16_t的用途是什麼,你想要什麼可能不能和其他兩個之一一樣完成?你什麼時候可以使用uint_least16_t
回答
比如你正在開發一個編譯器:
unsigned char
是8位unsigned short
是32位unsigned int
爲64位
和unsigned int是'最快的'。在該平臺:
uint16_t
將不可uint_least16_t
將是一個32位的值uint_fast16_t
將是一個64位的值
有點神祕,但是那是什麼這是爲了。
他們是多麼有用是另一個故事 - 我總是看到確切的大小變體。這就是人們想要的。我見過的'最少'和'快速'版本用得很接近永遠(它可能只是在示例代碼中 - 我真的不確定)。
它是c標準的一部分。它不需要很好的用例。 :P
請參閱this頁面,並查找標題爲「最小寬度整數類型」的部分。
它有一個很好的用例:例如,從0到32000的for循環計數;計數器變量應該是什麼類型? 16位?但是,在沒有本地16位類型的32位平臺上,這可能會非常慢。 32位?但是,在16位或8位平臺上這將非常緩慢。由於只要至少有16位,精確的位寬無關緊要,所以uint_fast16_t在這裏是理想的類型。但是,當您存儲具有1Mio這種值的數組時,uint_least16_t可能會更好,因爲它可能比uint_fast16_t小得多(節省您的兆字節內存)。 – Mecki 2011-01-11 19:55:37
啊,Patrick發佈的鏈接包括這個「typedef名稱uint_leastN_t指定一個寬度至少爲N的無符號整數類型,這樣沒有大小的無符號整數類型至少具有指定的寬度。
所以我目前的理解是:
uint_least16_t是能夠容納UINT16
uint_fast16_t是能夠容納UINT16
uint16_t整整UINT16最快的事情是最小的事情,遺憾的是可能在所有平臺上都不可用,在任何可用的平臺上,uint_least16_t將引用它。所以如果它保證在所有平臺上都存在,我們根本不需要uint_least16_t。
是的 - 但uint16_t不保證存在;認爲克雷(64位整數是他們所有的 - 整數和長整數)。 – 2008-10-30 23:15:14
- 1. 我什麼時候可以使用Task.Yield()?
- 2. 什麼時候可以使用filter_input()
- 3. 什麼時候可以使用IORef?
- 4. 什麼時候可以使用lodash.after()?
- 5. 我什麼時候可以使用AppDomain?
- 6. 你什麼時候使用新方法?
- 7. 你什麼時候使用jqGrid no_legacy_api = false?
- 8. Symfony sfFormFilters - 你什麼時候使用它?
- 9. 你什麼時候使用getGraphObject和getGraphEdge
- 10. 你什麼時候使用std :: unordered_map :: emplace_hint?
- 11. 你什麼時候使用mmap
- 12. 什麼時候是絕對最新的,你可以調用Page.ClientScript.RegisterClientScriptBlock?
- 13. 你什麼時候可以用降序定義一個索引?
- 14. 什麼時候你可以改寫屬性的時間最長?
- 15. 當你使用Nunit的時候,你可以使用哪個Claus
- 16. 什麼時候可以調用BarcodeScanner.GetDefaultAsync()?
- 17. 什麼是BigInteger,我們什麼時候可以使用它?
- 18. 什麼時候應該使用可可?
- 19. 你可以告訴什麼時候數據被插入到表
- 20. 什麼時候你返回一個類,你什麼時候返回一個HttpResponseMessage?
- 21. 你什麼時候會用attr_writer?
- 22. 什麼是Ninject,你什麼時候使用它?
- 23. KineticJS:我什麼時候使用toImage()以及什麼時候使用緩存()
- 24. 什麼時候DataView可用?
- 25. 什麼時候使用__proto__和什麼時候使用原型
- 26. 什麼時候應該使用AWS,什麼時候不使用
- 27. intn_t什麼時候使用它,什麼時候不使用
- 28. 什麼時候使用Ruby和什麼時候使用PHP
- 29. 什麼時候使用ByteString,什麼時候不使用?
- 30. 什麼時候你把Javascript放在body裏,什麼時候在頭,什麼時候用doc.load?
從這個答案可以推斷,編寫者的目標是編寫*最大*可移植的代碼應該永遠不會使用uint16_t **並且應該始終使用uint_least16_t或uint_fast16_t? – 2015-10-16 11:06:34