これは私の最初の投稿ですので、プロトコルエラーはご容赦ください。
私の質問は、次のJavaコードで何が起こっているのかを理解しようとしているだけです。括弧を使用するとすべてが明確になることは十分に理解していますが、結果の出力は、Javaの演算の順序に関する規則に反して飛んでいるようです。
public class Tester
{
public static void main(String[] args)
{
int total=9, num=13;
if (total>4 || ++num>15 && total>0)
{
System.out.println("short");
}
System.out.println(num);
}
}
出力は次のとおりです。short13
++numが実行されなかったことは明らかです。厳密な操作の順序が守られていれば、それが最初に発生するはずでした。そうではありませんでした。次は&&です。&&が||よりも優先順位で行われる場合、同じ...++numが最初に発生するはずです。そうではありませんでした。したがって、私には、出力は||で決定されたようです。最初に実行され、++ numを短縮してから、&&を操作すると、短縮形が出力されました。演算規則の順序は単に無視され、ブール式は左から右に実行されましたか?インクリメント演算子が不規則な動作を引き起こしていますか?
このコードで実際に何が起こっているかについての洞察に感謝します。