-3

我对运算符的含义感到困惑|=

一开始,我以为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;
}
4

4 回答 4

2

它的意思是

checker = checker|(1<<val)

它将有效地将位数 [val] 设置为 1 - 按位 OR 与单个 1 左移 [val] 次的模式

于 2013-03-31T08:33:17.433 回答
2
checker |=(1<<val);

是相同的

checker = checker|(1<<val)

| 是逻辑或运算(位级)

于 2013-03-31T08:34:49.657 回答
2
a |= b;

是以下形式的简写:

a = a | b;

这适用于 C、C++、Java、Python 以及可能更多的语言,它们都在某种程度上受到 C 的启发。

于 2013-03-31T08:35:12.123 回答
1

一般来说,foo x= bar意味着foo = foo x bar。因此foo |= barfoo = foo | bar

于 2013-03-31T08:35:53.887 回答