理解C 中(type)value 和type(value) 的細微差別
在C 中,顯式類型轉換存在兩種不同的語法:(類型)值和類型(值)。這種區別提出了一個問題:這兩個表達式之間有什麼區別(如果有的話)?
簡單轉換沒有區別
根據C 標準(第5.2 節) .3),當簡單型說明符後跟括在括號中的單一表達式時,結果表達式根據給定建立指定類型的值表達式。
(type)value 和type(value) 的等價
對於單一表達式,(type)value 在兩個定義中等同於type(value)和意義。這意味著將單一值轉換為指定類型時,這兩個表達式絕對沒有區別。
多個值的差異
但是,出現了細微的差異當轉換以逗號分隔的值列表時。在這種情況下,如果指定的類型是具有適當聲明的構造函數的類,則type(x1, x2, ...) 相當於使用給定值創建T 類型的臨時變數t 並將t 的值賦給表達式。
型別名稱限制
作為附加說明,有些型別名稱不能使用 type(value) 語法被使用。例如,雖然 (char )string 有效,但 char (string) 將編譯失敗。但是,如果使用 typedef 對類型進行別名,則可以將 type(value) 語法與別名一起使用。
以上是C 轉換中 (type)value 和 type(value) 之間有什麼區別(如果有)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!