将123的各数字顺序前后颠倒后输出。为什么我用int类型和long类型可以正常运行,而用byte类型和short类型则会出现一下错误提示,请问这是怎么回事?

代码部分
public class L5{
public static void main(String []args) {short a=123,b=a%10×100,c=a/10%10×10,d=a/100;
System.out.println(b+c+d);}}

注释:由于大家看的时候,运算符号乘号不显示所以我换成数学的乘号,代码并没有错误。

错误提示
Main.java:2: error: incompatible types: possible lossy conversion from int to short
public static void main(String []args) {short a=123,b=a%10100,c=a/10%1010,d=a/100;
^
Main.java:2: error: incompatible types: possible lossy conversion from int to short
public static void main(String []args) {short a=123,b=a%10100,c=a/10%1010,d=a/100;
^
Main.java:2: error: incompatible types: possible lossy conversion from int to short
public static void main(String []args) {short a=123,b=a%10100,c=a/10%1010,d=a/100;
^
3 errors





小魔女参考了bing和GPT部分内容调写:
这是因为byte和short类型的取值范围比int和long类型要小,当你用byte和short类型来存储123时,它们的取值范围就不够用了,所以会出现错误提示。为了解决这个问题,可以将123转换成int类型或者long类型,然后再进行操作。例如:

int a = 123;
int b = a % 100;
int c = a / 10 % 10;
int d = a / 100;
System.out.println(b + c + d);

运行结果为321。
回答不易,记得采纳呀。