6

数式に異なる数値タイプのオペランド(定数と変数)が含まれている場合、次の規則に従って、オペランドはより大きなタイプにプロモートされます。

  1. オペランドがタイプ、、、、、の場合、それらはタイプに変換さbyteれますsbytecharshortushortint
  2. オペランドの1つがである場合int、すべてのオペランドはに変換されますint
  3. 式にタイプuintとのオペランドも含まれている場合int、すべてのオペランドは次のように変換されます。long
  4. オペランドの1つが、の場合long、すべてのオペランドはに変換されますlong
  5. 式にタイプulongとのオペランドが含まれている場合、オペランドは次のlongように変換されます。float
  6. オペランドの1つがである場合float、すべてのオペランドはに変換されますfloat
  7. オペランドの1つが、の場合double、すべてのオペランドはに変換されますdouble

数値式にさまざまな型のオペランドが含まれているとすると、すべてのオペランドが最初に単一の数値型に変換され、次にランタイムが結果を計算しようとしますか?たとえば、変数b1b2byte型であり、i1が型である場合、計算の前にintwillb1とb2getがintに変換され(b1+b2)ます。

int i2=(b1+b2)+i1
4

2 に答える 2

1
于 2010-06-20T19:25:21.427 に答える
1

The parentheses are of higher precedence than +, so the conversion would normally take place after b1 and b2 have been added. However, the + operator does not have an overload for bytes, so the bytes must first be promoted to ints.

Further reading:

于 2010-06-20T19:25:29.960 に答える