作者applecool (noOneKnows)
看板C_and_CPP
標題[問題] 舊式型態轉換、運算優先順序
時間Fri May 20 23:34:48 2011
問題(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