看板 C_and_CPP 關於我們 聯絡資訊
問題(Question): 小弟想請教,假設 T 代表某型態如 int, double, ... 那想要用型態轉換處理[變數、運算式或函數回傳等] R (T)R T(R) 請問這樣有什麼不一樣? 我原本理解是第一種是直接轉換,第二種是呼叫T的建構式產生一個新物件再回傳。 所以結果一樣但是第一種比較好。 不過在網路上看到某老師的上課講義寫說第一種是 C 第二種是 C++,一樣。 其實我想應該不會影響程式的行為吧?也就是效果相同?效率會相同? 另外在 C++ Reference 看到 return (int(i)<int(j)); 的程式 我覺得有點疑惑最外層的括號為什麼要加?有何考量? 另外 C 運算符號優先順序應該到 C++ 還是不變的吧?(直覺是) 所以舊式轉換(我剛舉例的兩種)優先度跟 static_cast 是相同的? 感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.110.143.70
purpose:運算子從C到C++有改變的,好像只 , 它在 C++ 傳回的值 05/20 23:42
purpose:有可能是 l-value。至於你說的效率,用反組譯試試吧 05/20 23:42
ericwang1017:1.(T)R效率較好,T(R)不易出錯 05/21 02:40
ericwang1017:2. 加括號應該是純粹好習慣罷了 05/21 02:41
applecool:請問為何T(R)不易出錯?謝謝 05/21 08:58
ericwang1017:T(R)是隱轉,compile會幫你檢查type 05/21 21:22
ericwang1017:打錯,compiler 05/21 21:23
applecool:謝謝! 05/22 23:26