我想更好地知道什么時候該投。C+中的隱式類型轉換規則是什么,例如,int + float = ?int * float = ?float * int = ?int / float = ?float / int = ?int / int = ?int ^ float = ?等等.。表達式是否總是被計算為更精確的類型?對于Java,規則不同嗎?如果我說錯了這個問題,請糾正我。C+運算符中的隱式類型轉換規則
3 回答
長風秋雁
TA貢獻1757條經驗 獲得超7個贊
此模式稱為 常用算術變換,定義如下:
-如果任一操作數為范圍枚舉類型,則不執行轉換;如果其他操作數沒有相同類型,則表達式格式不正確。
-如果其中一個操作數是長雙操作數,則另一個操作數應轉換為長雙操作數。
-否則,如果任一操作數為雙,則另一操作數應轉換為雙操作數。
-否則,如果其中一個操作數是浮動的,則另一個操作數應轉換為浮動操作數。
-否則,應在兩個操作數上進行整體晉升。則下列規則適用于促進的操作數:
-如果兩個操作數具有相同的類型,則不需要進一步轉換。
-否則,如果兩個操作數都具有符號整數類型或兩者都具有無符號整數類型,則具有較小整數轉換級別類型的操作數應轉換為級別較大的操作數類型。
-否則,如果具有無符號整數類型的操作數的秩大于或等于另一個操作數類型的秩,則具有符號整數類型的操作數將轉換為具有無符號整數類型的操作數類型。
-否則,如果帶符號整數類型的操作數的類型可以用無符號整數類型表示操作數類型的所有值,則具有無符號整數類型的操作數將轉換為帶符號整數類型的操作數類型。
-否則,兩個操作數應轉換為與帶符號整數類型的操作數類型對應的無符號整數類型。
- 3 回答
- 0 關注
- 544 瀏覽
添加回答
舉報
0/150
提交
取消
