java - 在没有 ArithmeticException 的情况下除以零
问题描述
在尝试编写真值表时,我试图找出算法,并找到了一个可行的算法。但是现在我不明白为什么它不会抛出 ArithmeticException。
for(int i=0; i<Math.pow(2, numberOfInputs()); i++)
{
for(int j=0; j<numberOfInputs(); j++)
{
System.out.print("" + i/(int) Math.pow(2, j)%2 + "\t");
}
System.out.println("");
}
当 numberOfInputs() 返回 2 尝试此操作时,我得到:
Truthtable
0 0
1 0
0 1
1 1
但我不明白这是怎么回事,因为 Math.pow(2, j)%2 将是 =0 多次?!
解决方案
这是因为优先级,这是先执行的:i/(int) Math.pow(2, j)
,然后取模。第一个表达式永远不会被零除。更多关于它的文档。
推荐阅读
- php - 参数必须是 laravel 广播中的消息实例
- vba - Excel - 用户确认输入的值并根据响应填充其他字段
- python - 如何将另一个数据框添加到 pandas hdf5
- c# - 如何使用 SpeechRecognizer UWP 解决 System.Runtime.InteropServices.COMException?
- java - 适当的输入输出
- c++ - 标准::原子
行为 - autohotkey - 制作一个当窗口不再处于焦点时消失的 GUI
- asp.net-core - 在单个 launch.json 中运行两个项目
- python - 运行绘图破折号代码时,在 Chrome 浏览器中加载依赖项时出错
- ruby - 无法在 OSX 上安装 OpenSSL gem