2013-10-07 123 views
6

有人可以解釋當size_t或任何其他類型標識符被括在圓括號中時會發生什麼。我知道這是舊的typecast語法,但在這種情況下,我不關注發生的事情。這段代碼在做什麼? (size_t)-1

我已經看到了對於作爲定義的類型的最大尺寸:

size_t max_size = (size_t)-1 
+6

這是一個C風格的演員。它將'-1'轉換爲'size_t',這可能會產生一個非常大的數字。 – juanchopanza

+3

@juanchopanza:準確地說,size_t'可以代表的最大數字:) – 2013-10-07 20:38:25

+0

演員陣容是不必要的。 'size_t max_size = -1;'做同樣的事情。 –

回答

10

此代碼(不必要的)投射到-1size_t。最可能的意圖是在該系統上獲得最大可能值size_t

儘管這段代碼沒有未定義行爲,這個代碼是醜陋的 - 在C++中,你應該使用std::numeric_limits<size_t>::max()和C使用SIZE_MAX宏獲得最大size_t價值的完全是一個目的。

+1

這段代碼有明確的行爲。你可能不喜歡它,但它受到標準的制裁。 (事實上​​,C和C++標準都是。)而在C++(OP標籤)中,你應該使用'std :: numeric_limits :: max()' – rici