2011-08-11 64 views
4

我在代碼庫中遇到了這個語法,我找不到更多的信息。它看起來像脫字符號操作符(XOR操作符),但是因爲下面的語句是在滿足某個條件時執行的,所以我不認爲是這樣。這個PHP語法是什麼,並調用了一個脫字符號,它有什麼作用?

$this->m_flags ^= $flag; 

因爲我不知道它叫什麼我也不能搜索得當..

更新: 因爲克萊回答: 有以下幾行,然後在功能上等同?

$a = $a^$b; 
$a ^= $b; // the shorthand for the line above 
+0

是的,他們在功能上是平等的。 – steveo225

回答

11

這是bitwise XOR equals。它基本上是切換一個國旗,因爲我得到$flag是2的冪。舉個例子:

$a = 5; // binary 0101 
$b = 4; // binary 0100 
$a ^= $b; // now 1, binary 0001 

所以第三位已翻轉。還是那句話:

$a ^= $b; // now 5, binary 0101 
+1

$ b = 4; //二進制必須是0100 – vaidas

2
+0

我只看到^ =在註釋中使用。有沒有這方面的官方文件? –

+1

這與'$ this-> m_flags = $ this-> m_flags^$ flags'是一樣的' – steveo225

+1

它是'$ this-> m_flags = $ this-> m_flags^$ flag的簡寫形式;'' $ i + = 1'是'$ i = $ i + 1'的縮寫,或者'$ j * = 2'是'$ j = $ j * 2'的縮寫。這是C語言的標準語法。 –

相關問題