[問題] 舊式型態轉換、運算優先順序

看板C_and_CPP (C/C++)作者 (noOneKnows)時間15年前 (2011/05/20 23:34), 編輯推噓1(107)
留言8則, 3人參與, 最新討論串1/1
問題(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

05/20 23:42, , 1F
運算子從C到C++有改變的,好像只 , 它在 C++ 傳回的值
05/20 23:42, 1F

05/20 23:42, , 2F
有可能是 l-value。至於你說的效率,用反組譯試試吧
05/20 23:42, 2F

05/21 02:40, , 3F
1.(T)R效率較好,T(R)不易出錯
05/21 02:40, 3F

05/21 02:41, , 4F
2. 加括號應該是純粹好習慣罷了
05/21 02:41, 4F

05/21 08:58, , 5F
請問為何T(R)不易出錯?謝謝
05/21 08:58, 5F

05/21 21:22, , 6F
T(R)是隱轉,compile會幫你檢查type
05/21 21:22, 6F

05/21 21:23, , 7F
打錯,compiler
05/21 21:23, 7F

05/22 23:26, , 8F
謝謝!
05/22 23:26, 8F
文章代碼(AID): #1DreeQAA (C_and_CPP)
文章代碼(AID): #1DreeQAA (C_and_CPP)