最近,我對這兩個表達式感到困惑 - (type)value
和type(value)
。兩種(類型)值和類型(值)有什麼區別?
例如:size_t c = size_t(-1); size_t c = (size_t)-1;
的區別是什麼?
最近,我對這兩個表達式感到困惑 - (type)value
和type(value)
。兩種(類型)值和類型(值)有什麼區別?
例如:size_t c = size_t(-1); size_t c = (size_t)-1;
的區別是什麼?
前者是C++,它通過調用構造函數來做direct initialization。
第二個是C(或C++),它正在進行強制轉換。
所以,從C程序員的角度來看有很多不同。
此外,這是一個非常糟糕的主意,因爲size_t
是一個無符號類型。這應該使用ssize_t
完成,該簽名已被簽名並且不需要演員。
有很多情況需要(size_t)-1。 –
-1「它正在做直接初始化」;不,它不是,這仍然是一個複製初始化。直接初始化是例如'size_t x(-1)'。另外,'ssize_t'不是標準的C或C++類型,它是一個Posix類型。在32位系統及更高版本中,對應於size_t的簽名類型實際上是ptrdiff_t。無論如何,這是推薦用於您推薦Posix特定類型的目的的類型。第三,兩者都是強制轉換,並且C++符號轉換的效果被定義爲等同於C符號轉換。 –
在C中,只有其中一個是有效的表達式。
在C++中,它們是完全一樣的,它們是兩種可供選擇的形式:顯式轉換表達式:C風格和functional style。
+1是正確的 –
感謝Cubbi的反饋。你是對的 。 – user1983474
'type(value)'無效C. – pmg