天天看點

C++Primer----表達式左值和右值算術運算符短路求值政策除法運算和取餘運算遞增和遞減運算符成員通路運算符條件運算符(?:)逗号運算符位運算

  • 左值和右值
  • 算術運算符
  • 短路求值政策
  • 除法運算和取餘運算
  • 遞增和遞減運算符
  • 成員通路運算符
  • 條件運算符
  • 逗号運算符
  • 位運算

左值和右值

左值可以位于指派語句的左側,右值則不行。

當一個對象被用做右值時候,用的是對象的值(内容);當對象被用作左值的時候,用的是對象的身份(在記憶體中的位置)。

算術運算符

算術運算符包括(+ - * / % + - )(前倆個為一進制正号和一進制負号),滿足左結合律,即如果運算符的優先級相同,将按照從左到右的順序組合運算對象。

短路求值政策

邏輯與(&&) 邏輯或(||) 運算符規定先求左側運算對象的值,隻有當左側運算對象無法确定表達式的結果時才會計算右側運算對象的值。

除法運算和取餘運算

(-m)/n 和m/(-n)都等于-(m/n)

(-m)%n = -(m%n) m%(-n) = m%n

切勿混淆相等運算符和指派運算符!!!

遞增和遞減運算符

前置版本:運算對象加1(或減1),然後将改變後的對象作為求值結果。

後置版本:運算對象加1(或減1),求值結果是運算對象改變之前的那個副本。

後置遞增運算符的優先級高于解引用

成員通路運算符

點運算符和箭頭運算符都可以用于通路成員,其中,點運算符擷取類對象的一個成員。箭頭運算符與點運算符有關,且有ptr->mem 等價于 (*ptr).mem

解運算符的優先級低于點運算符,執行解運算的子表達式倆端必須加上括号。

條件運算符(?:)

條件運算符滿足右結合律,意味着運算對象按照從右向左的順序組合。

逗号運算符

首先對左側表達式求值,然後将求值結果丢棄,逗号運算符真正的結果是右側表達式的值。

位運算

位運算符:建議将位運算符用于處理無符号類型

位求反運算符:将運算對象逐位求反後生成一個新值,将1置0、将0置1(char類型的運算符首先提升至int類型,提升時運算對象原來的位保持不變,往高位添加0即可)

位異或運算符:如果倆個運算對象的對應位置有且隻有一個為1則運算結果中該位為1,否則為0.

如何擷取vector對象中的值和如何修改vector對象中的值 //push_back / 範圍for語句

繼續閱讀