作爲一個初學者學習指針,我寫的東西像究竟發生了什麼int i,k; ķ&= i;
int i = 1,
j = 2,
k;
k &= i;
i = 3;
期待k
指向i
,但是,我很快就發現,這個錯誤是k
不是int
指針,只是一個int
。但它編譯和運行爲什麼?
作爲一個初學者學習指針,我寫的東西像究竟發生了什麼int i,k; ķ&= i;
int i = 1,
j = 2,
k;
k &= i;
i = 3;
期待k
指向i
,但是,我很快就發現,這個錯誤是k
不是int
指針,只是一個int
。但它編譯和運行爲什麼?
k &= i;
爲
k = k & i;
短形式,其中&
是逐位and
。它與指針無關。
如果你想k
指向i
,你需要一個指針:
// v
int* k;
並使其指向i
:
k = &i; // NOTE: different from k &= i;
+1不錯! – Ankush
+1更快,更完整。 – 2012-10-17 14:26:11
& =是同樣k = k & i。 &是按位AND運算符。
k &= i
相當於k = k & i
這是一個按位和操作。
http://msdn.microsoft.com/en-us/library/5bk6ya5x(v=vs.71).aspx – Dan
我覺得你把'k&= i'看成'k =&i'。它們與「i- = 1」和「i = -1」更爲不同。 – hvd