我对|=
运算符的含义感到困惑。
起初,我认为checker|=(1<<val)
表示checker= checker+checker|(1<<val)
。我调试了代码,结果告诉我checker|=(1<<val)
与checker= checker+checker|(1<<val)
不同。
|=
运算符如何工作?
public static boolean isUniqueChars(String str){
int checker = 0;
for(int i=0; i<str.length();++i){
int val = str.charAt(i)-'a';
if((checker &(1<<val))>0) return false;
checker |=(1<<val); // what does it mean ?
// checker= checker +checker|(1<<val);
}
return true;
}
答案 0 :(得分:2)
意味着
checker = checker|(1<<val)
它将有效地将位数[val]设置为1 - 按位OR,其中模式为单个1左移[val]次
答案 1 :(得分:2)
checker |=(1<<val);
与
相同checker = checker|(1<<val)
|是逻辑OR运算(位级)
答案 2 :(得分:2)
a |= b;
是简短形式:
a = a | b;
这适用于C,C ++,Java,Python,可能还有更多语言,所有这些都受到C的启发。
答案 3 :(得分:1)
通常,foo x= bar
表示foo = foo x bar
。因此foo |= bar
为foo = foo | bar
。