2012-10-17 33 views
2

作爲一個初學者學習指針,我寫的東西像究竟發生了什麼int i,k; ķ&= i;

int i = 1, 
    j = 2, 
    k; 

k &= i; 
i = 3; 

期待k指向i,但是,我很快就發現,這個錯誤是k不是int指針,只是一個int。但它編譯和運行爲什麼?

+0

http://msdn.microsoft.com/en-us/library/5bk6ya5x(v=vs.71).aspx – Dan

+7

我覺得你把'k&= i'看成'k =&i'。它們與「i- = 1」和「i = -1」更爲不同。 – hvd

回答

21
k &= i; 

k = k & i; 

短形式,其中&是逐位and。它與指針無關。

如果你想k指向i,你需要一個指針:

// v 
int* k; 

並使其指向i

k = &i; // NOTE: different from k &= i; 
+1

+1不錯! – Ankush

+1

+1更快,更完整。 – 2012-10-17 14:26:11

2

& =是同樣k = k & i。 &是按位AND運算符。

2

k &= i相當於k = k & i這是一個按位和操作。

相關問題