簡體   English   中英

如果JLS的操作數為較小類型,則JLS在哪里指定加法的結果為int?

[英]Where does the JLS specify that the result of an addition is int if its operands are of smaller type?

關於“ 為什么我會得到類型不匹配:無法從int轉換為byte的原因” ,我嘗試在JLS中進行快速搜索,以找到提到byte操作數之間加法的結果自動擴展為int

我發現的最好的東西是本教程 ,但是我沒有在JLS中找到任何東西。

轉換”一章沒有提及任何關於加法運算符的內容,至少我找不到任何東西。 加法運算符”段落未提及字節的自動擴展。 它提到the type of each of the operands of the binary - operator must be a type that is convertible (§5.1.8) to a primitive numeric type ,但與擴展無關。 字節是數字數據類型。

我想念什么?

您幾乎在那里,在15.18.2中

對操作數執行二進制數值提升(第5.6.2節)。

在Java 7中,相關部分是JLS 5.6.2 ,以及相應的操作員部分; 例如,JLS 15.18.2用於數字的二進制加法運算符。

操作員部分說,首先執行二進制升級。 然后,第5.6.2節解釋說,如果另一個操作數是整數,則將byteshortchar進行二進制提升意味着轉換為int

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM