The first is automatic up-conversion: that is, for types with less space and types with more space, the operation result is converted into types with more space (this is to prevent the operation result from overflowing when there is less space). Int takes up 4 bytes and double takes up 8 bytes.
The result of the operation is a double type (this is because the last added x is a double type). If x is an int type, it is necessary to force a type conversion and change it to a double type of y.
The second round goes down: that is to say, the result of integer and integer operation should still be integer, and division is no exception. So what if you can't tell them apart? Then round down 3/2 of 1.5 and round down 1. This is different from rounding. As long as there are less than two, I'll take one.
To sum up, the result should be a double-type 2.0.