除以零而没有ArithmeticException

时间:2019-03-10 11:15:34

标签: java truthtable 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 =!

1 个答案:

答案 0 :(得分:2)

由于优先级高,因此先执行:i/(int) Math.pow(2, j),然后取模。第一个表达式永远不会被零除。在documentation中有更多相关信息。