int i=6,j=8.k=10,m=7;
if(!(i>j|m>K++)) K++;
!(i>j|m>K++)这条表达式的结果为true,因为i < j且m < k++,这样执行后k的结果为11,执行了++。由于if表达式的结果为true,所以执行k++,执行后k的结果为12

解决方案 »

  1.   

    因为  | 是当第一个条件判断完之后 不管结果是true还是false 都会 吧 后面的判断了,而用 ||  当第一个条件是true 后面的就不判断了,
     所以 一共做了2次 K++ 
      

  2.   

    public static void main(String[] args) {
    int i=6,j=8,k=10,m=7;
    if(!(i>j|m>k++)){
    //执行了一遍k++
    System.out.println("k="+k);
    //执行第二遍
    k++;
    }
    System.out.println("k="+k);
    }