![]() |
1
32
对。
没什么特别的…除了说被零除将导致运行时异常之外。但是,JLS承认以下定义中存在运行时异常的可能性:
(增加了重点。)因此以下内容无法编译:
好问题。我想这是一种投掷
但这一切都在旁边。事实是
|
![]() |
2
20
我对bug数据库进行了一些挖掘,发现了一些有趣的信息。 Bug ID 4178182: JLS doesnt specify behavior for 1/0 as a constant expression
Bug ID 4089107: javac treats integer division by (constant) zero as an error
Bug ID 4154563: javac accepts division by zero constant expressions in case expressions.
结论
所以问题是
|
![]() |
3
2
爪哇
explicitly requires
整数除以零触发
|
![]() |
4
2
好吧,如果你看一下双班,你会看到以下内容:
在float类中进行相同的计算,除了使用float而不是double。基本上,1/0返回一个非常大的数字,大于double.max_值。 以下代码:
输出:
注意打印时的特殊情况
为了回答这个问题,是的,它在Java中是合法的,但是1/0解决了“无穷大”,并且不同于标准的双倍(或浮动,等等)。 我应该注意到,我不知道它是如何或为什么以这种方式实现的。当我看到上面的输出时,我觉得这一切都像是黑色魔法。 |
![]() |
5
0
这是合法的,因为编译器不应该在编译时折叠常量表达式。 “智能”编译器可能编译:
作为
但是没有什么能说明编译器必须这样做。除此之外,1/0是一种法律表达,就像:
是一种法律表达。 在运行时,它抛出一个异常,但这是一个运行时错误,原因是。 |
![]() |
6
0
当您无论如何都需要一个运行时变量时,为什么还要在编译时捕获它呢? 例如,如果你正在从文本文件中加载和解析“0”,然后尝试按它划分,Java就不知道你在编译时做了什么,因为它不知道那个外部文件的内容。 此外,如果要将变量设置为0并将其除以变量,则Java必须跟踪脚本中的每个点的每个变量的每一个可能值,以便在编译时捕获0的除法。 最好保持事物的一致性,并使其成为仅运行时的异常。 |
![]() |
7
0
这是合法的 编译观点 ,但如果执行它将引发异常! 原因…好的编程必须允许灵活性,因此您键入的所有表达式和每个代码都是编译器的变量,因此在数学表达式x中/ Y 编译器不关心y变量值是否为( y=0 )或者编译器的其他数字,这是一个变量…如果编译器也必须查看值,那将被视为运行时,不是吗? |
![]() |
8
0
因为其他人已经回答了
答案可能是:
P.S.:它起作用了。o) |
|
user29759326 · 如何返回递归函数中的最后一个值? 7 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 7 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 7 月前 |
![]() |
rudraraj · java中未声明最终变量 7 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 7 月前 |