Probably, it depends on the compiler and system you are using: when I try it, I get 59.
The problem may be happening because you are mixing data types:
x=x+10*y;
^ ^ ^
| | |
| | ---- float
| ------ integer
-------- integer
When you multiply
10 * y
there are two ways the system can do it: convert the integer 10 to a float and then multiply, or convert the float to a integer and then multiply - and that may produce different results if the conversion of "5.6" is rounded or truncated. Rounding would give you 6, truncation would give you 5, so you could conceivably get 50, 56, or 60 as an integer result. Which means you could get a final value of 53, 59, or 63 - but it's very unlikely that you would get 58.
Except...it could be a precision problem:
Float Precision–From Zero to 100+ Digits | Random ASCII[
^]
Try making everything floating point:
float x = 3.0;
float y = 5.6;
x = x + 10.0 * y;
cout << x;
And I suspect your problem will just go away...