簡體   English   中英

這段代碼在做什么? (為size_t)-1-

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM