#include <stdio.h>
char c2=92;
printf("%d",c1|c2);
printf("%d",c1^c2);
printf("%d",c1&c2);
printf("%d",~c2);
return 0;
int main(void) {
char c1=92;char c2=92;
printf("%d",c1|c2);
printf("%d",c1^c2);
printf("%d",c1&c2);
printf("%d",~c2);
return 0;
}
输出结果为
92 0 92 -93
^表示异或运算,c1与c2值相同,异或的结果为0Java中if的问题&表示按位与 ~表示按位取反 |表示按位或
boolean a=false;
boolean b=false;
if(a=b){
System.out.printf("True");
}
else{
System.out.printf("False");
}
此时输出:False,因为a赋值为false,不会执行if下面;
if中改为a==b,输出为True,此时为正确的判断符;
若改b=true,则输出"True",因为a被赋值为true。
试想,当a ,b为int或者String类型时也会是这样吗?
public static void main (String[] args) throws java.lang.Exception { String a="aaa"; String b="aaa"; if(a=b){ System.out.println("ok"); } else{ System.out.println("bad"); }
用=时,其他类型编译均不会通过,因为if()里面要求必须是boolean类型。
用==时,正常上面的例子改为a==b时输出ok。