You are allowed a certain amount of room when you pass the value at declaration time.
So...
byte x = 13;
...will work, while...
byte x = 1000;
...will give you a compiler error.
Also...
int y = 13;
byte x = y;
...will give you a compiler error.
Just as would be expected.