[英]What is this code doing? (size_t)-1
有人可以解釋當size_t或任何其他類型標識符包含在括號中時會發生什么。 我知道這是舊的類型轉換語法,但在這種情況下,我不會關注正在發生的事情。
我已經看到它將類型的最大大小定義為:
size_t max_size = (size_t)-1
此代碼(不必要地)將-1
轉換為size_t
。 最可能的意圖是在此系統上獲得size_t
的最大可能值。
雖然這段代碼沒有未定義的行為,但這段代碼很難看 - 在C ++中你應該使用std::numeric_limits<size_t>::max()
而在C中使用SIZE_MAX
宏來獲得最大的size_t
值。
(size_t)-1
實際上相當於size_t(-1)
另請參閱以下問題c cast語法樣式
某些庫方法有意返回(size_t)(-1)
以指示錯誤情況。 例如, GNU libiconv庫中的iconv方法 。 我假設有一些很好的理由為什么這些函數不返回ssize_t
(signed)返回值,這將允許您直接檢查-1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.