```
byte b=9 ;
b=b+6 ;

```

gives compilation error (possible loss of precision )
why does `b=9` not give error whereas `b=b+9` give loss of precision ?

i was told that `9` (or any number) is treated as `int` hence loss of precision. But then why does `b=9` Not give any loss of precision error ?

Also when written as `b+=6` ,the code does NOT give any error. Whats the difference between `b=b+6` and `b+=6` ?

Can anyone please explain the intricacies or add a link where i might study them ?