我正在添加两个号码2147483647和45
public void checkIntAdd(){
int intMax = 2147483647;
int anyNumber = 26;
int number = intMax+anyNumber;
System.out.println("Wrong Calculation -"+number);
}
我们应该回答
“2147483692
“但它正在成为
-2147483604
我很好,它正在失去一些价值
但是当我尝试这种类型的东西时,它会产生编译错误
public void checkShortAdd(){
short intMax = 214;
short anyNumber = 26;
short number = intMax+anyNumber; // error is coming Type mismatch: cannot convert from int to short
System.out.println("Wrong Calculation -"+number);
}
//错误即将发生类型不匹配:无法从int转换为short
我无法理解它的原因。
当我向其添加演员时工作正常
short number = (short) (intMax+anyNumber);
类似地,编译器应该给int添加错误,以便用户可以注意它会超出限制
答案 0 :(得分:2)
数字1:第一个数字是Java中的最大整数大小。你可以用
来搞定Integer.MAX_VALUE
您可以使用
BigInteger reallyBig = new BigInteger("1234567890123456890");
2号:在Java中,它位于语言的基本编码中。简化,你可以说short + short = int,所以你必须将它转换为正确的解决方案
来源:https://www.reddit.com/r/learnprogramming/comments/3refus/in_java_why_is_the_sum_of_2_shorts_an_int/
答案 1 :(得分:0)
TL,DR ......
这是有效的short intMax = 214;
因为即使你是一个int文字,它也适合于短...的范围,同样适用于short anyNumber = 26;
现在java编译器不能保证这个
short number = intMax + anyNumber;
仍然可以适合一个短变量,所以你需要施放
short number = (short) (intMax + anyNumber);
答案 2 :(得分:0)