class Zeta{
public static void main(String[] args){
int x = 1;
if((4>x)^((++x + 2)>3)) x++;
if((4>++x)^!(++x ==5))x++;
System.out.println(x);
}
}结果是4, 我对^和^!不知道怎么理解,请教大神
public static void main(String[] args){
int x = 1;
if((4>x)^((++x + 2)>3)) x++;
if((4>++x)^!(++x ==5))x++;
System.out.println(x);
}
}结果是4, 我对^和^!不知道怎么理解,请教大神
if((4>x)^((++x + 2)>3)) x++;
// 4 > (x=1) true
// (++x (x=2)) + 2 > 3 true
//true ^ true = false x++ 不执行
// 此刻 x = 2;
if((4>++x)^!(++x ==5))x++;
// 4 > ++x (x=3) true;
// !(++x (x=4) == 5) true;
//true ^ true = false x++ 不执行
System.out.println(x(x = 4));
!是对(++x ==5)取反。
^是异或操作符
1^0 =1
1^1 =0
true^true =false
true^false =true;
public static void main(String[] args){
int x = 1;
if((4>x)^((++x + 2)>3)) x++; //4>1 true, ++x,x变为2,2+2=4>3也是true,相同为false。
if((4>++x)^!(++x ==5))x++; //++x,x变为3, 4>3 true;再++x,x变成4,4==5 false, 单纯异或,此处应该是true,但是此处有"!",进行取反的操作,又变成false,所以也不执行。
System.out.println(x);
}
}
^! 这里的“!”不是和^连在一起用,是和后面的表达式连用。即!(++x ==5),最好是将表达式与运算符用空格隔开,这样读起来比较容易懂。
^ 和 !^是位运算符 一般是在正则表达式里用的比较多
true ^ false = true 异或