簡單說,就是相當於如果參數非常複雜,那麼*和&操作符會如何操作?
&(someObject->someAttribute.someMember);
或
&someObject->someAttribute.someMember;
(&someObject)->someAttribute.someMember;
或
(&(someObject->someAttribute)).someMember;
還是應該真正把明確括號有菊st安全嗎?
簡單說,就是相當於如果參數非常複雜,那麼*和&操作符會如何操作?
&(someObject->someAttribute.someMember);
或
&someObject->someAttribute.someMember;
(&someObject)->someAttribute.someMember;
或
(&(someObject->someAttribute)).someMember;
還是應該真正把明確括號有菊st安全嗎?
它等效於:
&((someObject->someAttribute).someMember)
的->
.
和具有相同的優先級,並且左結合。一元 - &
具有較低的優先級。
如果你有非常複雜的表達式,那麼你當然應該使用括號來分組和明確你的代碼。但這並不是特別複雜,在C和C++中看到這樣的代碼是很常見的。
向下滾動到運營商部分。圖表中較高框中的操作員在操作員處於較低的框中之前考慮。另請參閱關聯性規則。
或者你真的應該把明確的括號放在那裏才安全嗎?
這是一個偏好問題,但作爲一般規則,如果您在解決問題時遇到任何困難,那麼其他人也會這樣做。有疑問時加括號。
-1,因爲你實際上並沒有回答這個問題,這是一個簡單直接的問題。這應該是一個評論,而不是一個聲譽捕撈探險隊。以馬丁·約克的評論爲例。 – 2010-09-24 15:07:42
@John:對於這樣的新用戶有點苛刻。魚類教學也很重要,在某些情況下甚至更可取。 – 2010-09-24 15:27:04
@Roger:你可能是對的。 @dgnorton:對不起,我已經撤消了我的d/v。 – 2010-09-24 15:49:04
如果你想要someMember的地址,然後&(someObject-> someAttribute.someMember)或& someObject-> someAttribute.someMember。
首先someObject-> someAttribute和第二到其構件somMember和第三是& 地址
結構XXX { INT XX; }; struct temp {int x; struct xxx ptr; };
struct temp t1 = {125,{127}};
struct temp *t2 = &t1;
printf("%d %d",t2->x,*&t2->ptr.xx);
在這裏看到:http://www.cppreference.com/wiki/operator_precedence – 2010-09-24 14:42:21