a++得到的是乙個右值,++操作需要的是乙個左值。
a++返回的是乙個右值,不對再++了,可以寫成
++(++a)
a++的意思是先複製乙份臨時資料出來參與周邊環境的運算,再自加變數a,可見a++用來參與運算的是乙份複製出來的臨時資料,這個資料是臨時存在而沒有固定位址的,不是乙個真正的變數。++a的意思是先自加變數a,再將變數放到周邊環境參與運算,那麼++a用來參與運算的是有具體位址的變數,所以++a是可以作為左值使用的。
在具體一點可以理解為:
a++返回乙個臨時變數
++a返回變數的引用
易錯的C語言題目
這道題是我在網上看到的。拿出來給大家一起學習學習 include int main void int p int a 1 printf p 1 d,p 1 d,p d n p 1 p 1 p printf d d sizeof a sizeof a return 0 題目看似簡單,其實重點難點在於理...
C語言結構體的寫法
用c語言寫結構體時,一般有以下3種寫法,下面做乙個比較總結 1 struct node node 2 typedef struct node node 3 typedef struct node 第一種寫法做了兩件事情 1 定義乙個名為 node的結構體 struct node 2 然後申明乙個例項...
C語言 全排列的遞迴寫法
作為計算機小白 部落格內容暫為學習總結 僅供讀者參考 a題時用到了全排列,不會寫,就學了一種 遞迴法全排列 模仿深搜的遞迴標記思想,每獲得一種排列方式,存入一種方式,由於是全排列 時間複雜度較高。include int base 15 mark 15 cache 15 res int 1e7 15 ...